unity5でキーボードの操作に反応してオブジェクトを動かすには


unity5で、キーボードの矢印キー「→」をおした時にx座標を`+10`、「←」を押した時はx座標を`-10`した位置に動く(瞬間移動ではなく、スーッと動く)というものを書きたいのですが、やり方が分からず困っています。

[code]

    function Update(){
        var x : float = Input.GetAxis("Horizontal");
        if (x != 0 ){
          if(x > 0){
            transform.Translate(10, 0, 0);
          }else{
            transform.Translate(-10, 0, 0);
          }
        }
    }
    
[/code]

現在のコードはこのような感じで、押してる間動くという挙動になってしまいます。

「カチ(入力)」「スー(動く)」  
「カチカチ(入力)」「スー、スー(動く)」  
という感じにするにはどうしたら良いのでしょうか。

言語はJavaScriptでお願いします。




>
> unity5で、キーボードの矢印キー「→」をおした時にx座標を+10、「←」を押した時はx座標を-10し>た位置に動く(瞬間移動ではなく、スーッと動く)というものを書きたいのですが、やり方が分から>ず困っています。

上記をまず設計しましょう。  
質問者さんが実現したいことは  
A地点からB地点まで距離10あるとして、移動するときに一気に10進むのではなく、  
少し刻んで10地点までいく、だと思います。  
それを満たすためには以下のように実装してやればいいと思います。  
※2DドラクエみたいなRPGの移動をしたい、という認識で記載してます。

1.10進む、という部分をnフレーム使って10進む、という実装にする  
2.移動している間はキー入力を無効にする

といった感じにしてやればいいと思います。  
この点はコルーチンか、あるいはUpdateでフレームを管理するシステムを作ってやれば  
実現できると思います。

肝なのは、1フレームで処理させるのではなく、数フレームまたぎで処理させてやることです。

> <http://docs.unity3d.com/ScriptReference/Input.GetKey.html>  
>  <http://docs.unity3d.com/ScriptReference/KeyCode.html>

上記、公式ドキュメントです。  
キーの入力フラグはこちらがよいかと思います。

