Unityが2人のプレーヤーをセットアップする方法

Unityでは、Input.GetAxis( "Vertical")関数を直接呼び出して、プレーヤーが動いているかどうかを判断できることがわかっています。しかし、問題があります。つまり、ゲームに同時に2人のプレーヤーがいる場合、問題が発生します。
ここに画像の説明を挿入します
Input.GetAxis( "Vertical")関数により、プレーヤーがWSキーを押したことを検出できるだけでなく、上下の矢印キーも検出できます。これにより、プログラムは実際に移動したプレーヤーを区別できなくなります。

解決策:方向を分割します。たとえば、WSはプレーヤー1の移動キーであり、上下方向キーはプレーヤー2の移動キーです。
ここに画像の説明を挿入します
ボタンのセットが1つしかないことがわかりました
ここに画像の説明を挿入します
。それをクリックした後、2セットのボタンがサポートされている理由であることがわかりました
ここに画像の説明を挿入します
ボタンをコピーします。ここでは、水平を選択して追加し、プレーヤー1として設定します。
ここに画像の説明を挿入します
ボタンのコピーをもう一度作成して、プレーヤー2に設定しましょう。
ここに画像の説明を挿入します
同様に、2セットの垂直ボタンを設定します。
ここに画像の説明を挿入します
次に、スクリプトでそれらを区別して、さまざまなキーやさまざまなオブジェクトの移動の効果を実現する必要があります。

public class TankMovement : MonoBehaviour {
    
    
    
    //设置一个移动速度
    public int speed = 5;
    private Rigidbody rigidbody;
    //设置一个角速度  
    private int angularSpeed = 10;
    //设置一个编号即可
    public int select = 1;
	// Use this for initialization
	void Start () {
    
    
        rigidbody = GetComponent<Rigidbody>();
	}
	 
	// Update is called once per frame
	void Update () {
    
    
		
	}

    //固定帧调用,一般使用场景为物理移动 
    void FixedUpdate()
    {
    
    
        float h = Input.GetAxis("Player" + select + "Horizontal");  
        //垂直方向W S 为前后移动
        float v = Input.GetAxis("Player" + select + "Vertical"); 
        //刚体自身设置一个移动速度,transform.forward代表自身的前方向移动,
        rigidbody.velocity = transform.forward * v * speed;
        // 刚体自身设置一个角速度 
        rigidbody.angularVelocity = transform.up * h * angularSpeed;
    }
}

Unityでは、選択ボックスが表示されていることがわかりました。異なるゲームオブジェクトの移動操作を実現するには、選択ボックスを異なる設定にするだけで済みます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_42708024/article/details/106583340