Input.GetAxisがどのような処理なのか、ご存知でしょうか?今回の場合は、こちらをご自分で調べて欲しかったです。
恐らく以下のサイトが参考になるかと思われます。(グーグルで「Input.GetAxis」と検索すると、出てきます。)
https://qiita.com/RyotaMurohoshi/items/ ... 056affa2df
こちらのサイトに、「例えば上記のコードで上矢印キーを押した場合、dyにはfloat型で正の値が代入されます。押し始めてすぐのフレームでは0.01Fなど小さな値ですが、連続で押し続けることで、徐々に値が増えていき、1.0Fになります。1.0Fになった後にボタンを押し続けても、それ以上値は増えません。」とあるように、Input.GetAxisを移動量に使えば、慣性のように働いてしまうのはお分かりになられるかと思います。
また、これはUnityのデバッグ機能を用いることで、ご自分で検証することも可能です。
Update関数に、以下の処理を追加して動かしてみて下さい。(Input.GetAxis("Vertical")の値が、コンソールウィンドウに表示されます。)
Debug.Log(Input.GetAxis("Vertical"));
上記を踏まえて、どのように改善したらいいのかと申しますと、キーボードを使うのか、パッドを使うのかにより処理が異なってきます。
キーボードの場合は、以下のようになると思います。
コード:
if (Input.GetKey(KeyCode.RightArrow)) {
transform.Translate(speed, 0.0f, 0.0f);
} else if (Input.GetKey(KeyCode.LeftArrow)) {
transform.Translate(-speed, 0.0f, 0.0f);
}
if (Input.GetKey(KeyCode.UpArrow)) {
transform.Translate(0.0f, speed, 0.0f);
} else if (Input.GetKey(KeyCode.DownArrow)) {
transform.Translate(0.0f, -speed, 0.0f);
}
ゲームパッドを使う場合は、以下のようになると思います。
コード:
if (Input.GetAxis("Horizontal") > 0.1f) {
transform.Translate(speed, 0.0f, 0.0f);
} else if (Input.GetAxis("Horizontal") < -0.1f) {
transform.Translate(-speed, 0.0f, 0.0f);
}
if (Input.GetAxis("Vertical") > 0.1f) {
transform.Translate(0.0f, speed, 0.0f);
} else if (Input.GetAxis("Vertical") < -0.1f) {
transform.Translate(0.0f, -speed, 0.0f);
}