尝试移动脚本

简单的上下左右移动

    public int moveSpeed = 10;
    void Start()
    {
        // _rig = gameObject.GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        //Move();
        float horizontal = Input.GetAxis("Horizontal"); //A D 左右
        float vertical = Input.GetAxis("Vertical"); //W S 上 下

        //_rig.transform.Translate(Vector3.forward * vertical * moveSpeed);
        transform.position += Vector3.forward * vertical * moveSpeed * Time.deltaTime;
        transform.position += Vector3.right * horizontal * moveSpeed * Time.deltaTime;
        //_rig.MovePosition(transform.position);
        //_rig.MovePosition(transform.position + Vector3.forward * vertical * moveSpeed * Time.deltaTime);
        //_rig.MovePosition(transform.position + Vector3.right * horizontal * moveSpeed * Time.deltaTime);
        
        
    }

跟随摄像机视角移动

上述移动方式有个问题,在摄像机方向移动的时候,角色“向前移动”还是原来的方向,而不是当前视角的正前方,以下脚本解决这个问题。

角色向前移动朝着摄像机的正前方移动。

Quaternion 通过旋转控制移动,参考:

https://blog.csdn.net/Vincenths/article/details/8682982arrow-up-right

https://www.cnblogs.com/jeason1997/p/9822353.htmlarrow-up-right

Quaternion * Vector3,可以理解成:在世界坐标系下旋转Quaternion,再乘以当前坐标系的Vector3向量,返回一个世界坐标系的向量。

2D移动脚本

最后更新于