質問: Input.GetAxis("Horizontal"); if (x != 0 ){ if(x > 0){ transform.Translate(10, 0, 0); }else{ transform.Translate(-10, 0, 0); } } } ``` 現在のコードはこのような感じで、押してる間動くという挙動になってしまいます。 「カチ(入力)」「スー(動く)」 「カチカチ(入力)」「スー、スー(動く)」 という感じにするにはどうしたら良いのでしょうか。 言語はJavaScriptでお願いします。
回答: 「キーを押したあと、キーを離しても動き続けさせるにはどうすればよいか?」という質問だと理解しましたが、この理解でよろしいですか? 理解が正しいとすれば、基本的にまず移動量を保持して、毎フレームtransform.Translate()へ移動量を与え続ければ、キー入力がなくても動き続けると思います。 「スー(動く)」の部分の仕様がわからないため適当(キー入力で速度を与えて、数フレームにかけて徐々に減速する)に書きましたが、こんな感じでしょうか。 一応キーを離しても移動し続ける様子がわかると思います。 移動量や減速の度合いはお手元の環境に合わせてお試しください。 UnityでJavaScriptを使うの初めてなので変だったらスミマセン。 ``` #pragma strict var v : Vector3; function Start () { } function Update () { var x : float = Input.GetAxis("Horizontal"); if (x != 0 ){ if(x > 0){ //transform.Translate(10, 0, 0); v.x = 0.1f; // 移動量の変更 }else{ //transform.Translate(-10, 0, 0); v.x = -0.1f; // 移動量の変更 } } transform.Translate(v); v.x *= 0.95f; // 移動量の更新 } ```