2016-06-14 5 views
0

背景:私はブレークアウトクローンを作成しています。パドルをマウスの動きでX軸に沿って移動させるパドルのスクリプトがあります。Getaxisを使用して、c#/ Unity3Dのx軸に沿ってマウスと矢印キーの両方でオブジェクトを移動しますか?

欲望:このゲームには2つの入力が必要です。 1つはマウス、もう1つは左右の矢印キーです。編集---->プロジェクト設定---->入力に行きましたが、Alt負のAltキーをマウスのx軸に合わせて調整する方法がわかりません。

また、ゲーム画面のサイズに基づいて動きをクランプしたいと思います。私はMathfclampメソッドを使用する必要があることを知っていますが、スクリプトの正しい順序でフォーマットする方法についてはわかりません。

ここはGetAxisで使用したコードです。

public class Paddle : MonoBehaviour { 


    public float speed; 


    void Update() 
    { 
     float x = Input.GetAxis("Mouse X")* Time.deltaTime*speed; 


     transform.Translate (x,0,0); 

    } 
} 
+0

正常に機能しましたか? – Programmer

答えて

0

あなたは、矢印キーでInput.GetAxisを使用することはできませんが、これを行う方法のトリックがあります。まず、Input.GetAxisを使用してマウス移動値を取得し、変数xに格納します。 xの値がの場合は、または未満 の場合は、Input.GetAxisの値のオブジェクトを移動します。

x値はある場合は、左または右矢印が押されたかどうかを確認してからxの方向が押されたキーに応じて、Vector3.right*speedまたはVector3.left.x * keySpeedであることを確認します。知るべきもう一つのことは、両方の速度乗数が異なる値でなければならないということです。マウスには倍率が、キーボードには倍率が必要です。オブジェクトは画面から消えます。マウスの適切な値は100fであり、キーボードの値は0.1fです。

public class Paddle : MonoBehaviour 
{ 
    public float mouseSpeed = 100; 
    public float keySpeed = 0.1f; 


    void Update() 
    { 
     float x = 0; 
     x = Input.GetAxis("Mouse X") * Time.deltaTime * mouseSpeed; 

     if (x == 0) 
     { 
      if (Input.GetKey(KeyCode.LeftArrow)) 
      { 
       x = Vector3.left.x * keySpeed; 
      } 

      if (Input.GetKey(KeyCode.RightArrow)) 
      { 
       x = Vector3.right.x * keySpeed; 
      } 

     } 
     transform.Translate(x, 0, 0); 
    } 
} 
関連する問題