如何在不同位置间顺畅地移动球员

本文关键字:移动 位置 | 更新日期: 2023-09-27 18:04:45

public float movespeed = 0.0f;
private float x;
private float y;    
private float z;
private CharacterController controller;
private Vector3 moveDirection;
    void Update () {
            Vector3 pos = GameObject.FindWithTag("Player").transform.position;
            x = pos.x;
            y = pos.y;
            z = pos.z;
            moveDirection = Vector3.zero;
            if(Input.GetKey(KeyCode.A))
                transform.position = new Vector3(-1.3f, y, z);
            else if(Input.GetKey(KeyCode.D))
                transform.position = new Vector3(1.3f, y, z);
            //moveDirection.x = Input.GetAxis("Horizontal") * movespeed;
            moveDirection.z = movespeed;    
            controller.Move (moveDirection * Time.deltaTime);
        }

我想让我的玩家在两个x轴点(-1.3和1.3)之间移动,使用上面的代码,我能够实现这一点,但它只是传送(我知道代码是如何制作的)。我希望过渡顺利。有什么办法吗?

如何在不同位置间顺畅地移动球员

多亏了上面的评论,我才能够让它工作:)正确的做法是使用SLerp。我是这样使用的:-

transform.position = Vector3.Slerp (pos, newPos, movespeed);

首先我用pos的值复制了newPos,然后在newPos中只更改了x轴值(在我的情况下获得所需的结果)。