Unity双人操作模式以及对物体的移动控制

时间:2024-04-08 16:19:08

碰巧学到siki学院的坦克大战的项目,就对里面如何操作坦克以及双人操作模式进行总结

下图为最终实现的效果,我们只对物体移动和如何使用wasd控制以及↑↓←→控制进行讲解
Unity双人操作模式以及对物体的移动控制

1.添加刚体

刚体这个组件可以说是控制物体运动必备的组件了。
如图给物体添加上
Unity双人操作模式以及对物体的移动控制

2.添加控制移动脚本

public class TankMove : MonoBehaviour {
    public float speed = 5;
    public float angularspeed = 10;
    public int playerid = 1;//玩家编号
    private Rigidbody rgd;
    
	void Start () {
        rgd = GetComponent<Rigidbody>();
	}

    private void FixedUpdate()
    {
        float v = Input.GetAxis("VerticalPlayer"+playerid);
        rgd.velocity = transform.forward * v*speed;
        float h = Input.GetAxis("HorizontalPlayer" + playerid);
        rgd.angularVelocity = transform.up * h * angularspeed;
    }
}

3.设置控制按键

看完上述脚本,肯定会有疑问,Input.GetAxis()里面的字符串平常见到的都是"Vertical"和"Horizontal",这就是我们需要用到自定义的地方.如下图找到设置的位置

Unity双人操作模式以及对物体的移动控制
点开后是下图所示
Unity双人操作模式以及对物体的移动控制

我们这边就可以对"Horizontal"和"Vertical"按键进行大展身手了,来自定义我们想要的按键。

  • 我们首先右键Horizontal,然后选择Duplicate Array Element 这样我们就可以复制一个新的出来而不影响原来的。又因为我们有两个坦克,所以就创建两个出来,然后里面的参数如下图设置就可以分别实现ad←→
    Unity双人操作模式以及对物体的移动控制
    关键点就是把两边按键不要设置相同,各有自己的特点,这样我们就可以左右啦
    那么上下也是一样的,把Vertical和上面一样做一遍
    Unity双人操作模式以及对物体的移动控制

这样我们就可以进行双人运动啦

特别注意一下 之前代码中的angularVelocity是角速度控制物体转动的。当我们按下左右的时候,根据定义好的angularspeed沿着物体的Y轴(transform.up)进行旋转

还有Rigidbody组件中 要对物体的位置以及旋转轴进行锁定,第一次试的时候如果不设置的话 会出现坦克升天…(沿着Y轴运动了),旋转的时候我们只需要用到Y轴,所以把X Z轴锁定就行了
Unity双人操作模式以及对物体的移动控制