Unity如何设置两个玩家

我们知道在Unity你直接调用Input.GetAxis(“Vertical”)函数用来判断玩家是否移动是可以的。但是存在一个问题,就是我们如果游戏中同时存在两个玩家,则会出现问题。
在这里插入图片描述
因为Input.GetAxis(“Vertical”)该函数,不但可以检测玩家按下W S键,以及上下方向键。这就导致我们程序无法区分到底是哪个玩家发生了移动。

解决办法:对方向进行拆分,例如:W S为玩家一的移动键,上下方向键为玩家二的移动按键。
在这里插入图片描述
我们发现这里只存在一组按键
在这里插入图片描述
点开以后我们发现,这就是为什么支持两组按键的原因。
在这里插入图片描述
我们拷贝一份按键出来,这里我们选择Horizontal进行添加,将其设置为玩家一。
在这里插入图片描述
我们再拷贝一份按键出来,将其设置为玩家二。
在这里插入图片描述
同理,我们设置出Vertical的两组按键。
在这里插入图片描述
接下来就需要我们在脚本中对其进行区分,实现不同按键,移动不同物体的效果。

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中我们发现出现了一个select选择框,我们只需要将其设为不同,即可实现对不同游戏对象的移动操作。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42708024/article/details/106583340