【问题标题】:Unity 5 fpscontroller weird errorUnity 5 fpscontroller 奇怪的错误
【发布时间】:2017-12-16 06:35:19
【问题描述】:

我为我的 Player 对象制作了这个脚本。它必须有孩子、1 个相机和 1 个模型。 他们的问题是每当我移动鼠标时,玩家就会向下移动。并且凸轮升起。

脚本:

public GameObject cam;
public float sensitivity = 2f;
public float walk_speed = 2f;
public float run_speed = 2f;

CharacterController player_CC;
float speed;
float moveFB;
float moveLR;
float rotX;
float rotY;
bool canMove;


void Start () {

    canMove = true;

    player_CC = GetComponent<CharacterController>();

    speed = walk_speed;

}


void Update () {

    if (canMove)
    {
        moveFB = Input.GetAxis("Vertical") * speed;
        moveLR = Input.GetAxis("Horizontal") * speed;

        rotX = Input.GetAxis("Mouse X") * sensitivity;
        rotY = Input.GetAxis("Mouse Y") * sensitivity;

        Vector3 movement = new Vector3(moveLR, 0, moveFB);
        transform.Rotate(0, rotX, 0);
        cam.transform.Rotate(rotY, 0, 0);
        movement = transform.rotation * movement;
        player_CC.Move(movement * Time.deltaTime);
    }

    if (Input.GetKey(KeyCode.LeftShift))
    {
        speed = run_speed;
    } else
    {
        speed = walk_speed;
    }

}

【问题讨论】:

    标签: c# unity3d unity5


    【解决方案1】:

    movement = transform.rotation * movement;

    您将变换旋转乘以运动矢量。分离逻辑。

    【讨论】:

    • 我认为你错了。旋转将如何让我的玩家在 y 上上下移动?
    • @NA-Entertainment 你是对的,我错了。更新了答案。
    • 对不起。我不太明白。你能进一步解释一下吗?
    【解决方案2】:

    我知道是什么原因造成的。但我不知道它为什么这样做。但是我在同一个对象上使用了一个字符控制器和一个刚体。很抱歉浪费您的时间:/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      相关资源
      最近更新 更多