首页 > 解决方案 > 计算玩家移动方向时的延迟

问题描述

我正在尝试确定变换的方向。我最初试图通过跟踪rigidbody.velocity 来做到这一点,但该属性似乎不可靠,所以我不得不手动计算方向。黄线画得很好,它确实指向错误的方向,但它似乎被延迟了

我在更新方法中调用以下方法:

    void DetermineMovementDirection()
    {
        currentLoc = (transform.position - prevLoc) / Time.deltaTime;
        Vector3 t = (prevLoc + currentLoc).normalized;

        Debug.DrawLine(transform.position, transform.position + t * 5, Color.yellow);
    }

我希望黄线始终指向玩家移动的方向,而不是长时间延迟。我怎样才能解决这个问题?

在此处输入图像描述

根据要求的运动功能:

    void Update()
    {
        float inputZ = Input.GetAxis("Horizontal");
        float inputX = Input.GetAxis("Vertical");

        if (movementAllowed)
            if (inputZ != 0 || inputX != 0)
            {
                transform.eulerAngles = new Vector3(0, Mathf.Atan2(inputZ, inputX) * 180 / Mathf.PI, 0);
                transform.Translate(moveSpeed * inputZ * Time.deltaTime, 0f, moveSpeed * inputX * Time.deltaTime, Space.World);
            }
    }

我只是在更新方法结束时进行更新:

prevLoc = transform.position;

标签: unity3d

解决方案


推荐阅读