キャラのを動かす為「PlayerMove」のスプリプトにて、まずはこの様なコードを書いてみました!
パターンA
//変数宣言 [SerializeField] private float speed = 15f; private Vector3 moveD = Vector3.zero; if (Input.GetKey(KeyCode.W)) moveD.z += 1f; if (Input.GetKey(KeyCode.S)) moveD.z -= 1f; if (Input.GetKey(KeyCode.D)) moveD.x += 1f; if (Input.GetKey(KeyCode.A)) moveD.x -= 1f; moveD = moveD.normalized; transform.position += moveD * Time.deltaTime * speed;
これだとキャラは動くのですが、一度キーを押してしまうと摩擦が無いかの如く、その方向に滑るようににしてずっと動てしまいします。
次に自分なりに試行錯誤して「var」と言うのを知りコードを改良してみました。
パターンB
var vac = Vector3.zero; if (Input.GetKey(KeyCode.W)) vac.z += 1f; if (Input.GetKey(KeyCode.S)) vac.z -= 1f; if (Input.GetKey(KeyCode.D)) vac.x += 1f; if (Input.GetKey(KeyCode.A)) vac.x -= 1f; vac = vac.normalized; transform.position += vac * Time.deltaTime * speed;
パターンBだと押している間だけキャラは進み、ボタンを離すとピタっと止まります!
この「var」という性能と効果をよく理解出来ません。
今後、「Vector3」を使ったキャラ移動のコードは全て「var」を使った方がいいのでしょうか?
どなたかこの「var」について解説と、上記の2種類のコードの根本的な違いを教えて頂きたいです!
宜しくお願いします。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。