Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 计算球员移动方向时的延迟_Unity3d - Fatal编程技术网

Unity3d 计算球员移动方向时的延迟

Unity3d 计算球员移动方向时的延迟,unity3d,Unity3d,我试图确定变换的方向。我最初试图通过跟踪rigidbody.velocity来实现这一点,但该属性似乎不可靠,因此我必须手动计算方向。黄线画得很好,它确实指向错误的方向,但它似乎被延迟了 我正在更新方法中调用以下方法: void DetermineMovementDirection() { currentLoc = (transform.position - prevLoc) / Time.deltaTime; Vector3 t = (prevL

我试图确定变换的方向。我最初试图通过跟踪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);
    }
prevLoc = transform.position;
我希望黄线总是指向球员移动的方向,而不是长时间的延迟。我怎样才能解决这个问题

根据要求,移动功能:

    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);
            }
    }
我只是在更新方法的末尾进行更新:

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

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

你能展示一下你是如何更新transform.position和prevLoc的吗?@aresCaelum已经为你添加了这些例子:-)在我看来,如果玩家的前进方向正确,你想要的一切都是正确的吗?您可以只使用变换的forward属性。Debug.drawine(transform.position,transform.forward+t*5,Color.yellow);不,不是前进的方向。玩家实际移动的方向。这是很常见的一个球员面对不同的方式,他们正在移动即当跳跃或下降和转向,或者如果一个球员被手榴弹击中etc@leoQuint向前变换取决于角色的方向。。。侧步不是球员移动的方向。。。Jamesla有没有一个原因让你不能只做
moveDirection=(transform.position-prevLoc)
你能告诉我你是如何更新transform.position和prevLoc的吗?@aresCaelum已经为你添加了这些例子:-)在我看来,如果玩家的前进方向正确的话,你想要什么?您可以只使用变换的forward属性。Debug.drawine(transform.position,transform.forward+t*5,Color.yellow);不,不是前进的方向。玩家实际移动的方向。这是很常见的一个球员面对不同的方式,他们正在移动即当跳跃或下降和转向,或者如果一个球员被手榴弹击中etc@leoQuint向前变换取决于角色的方向。。。侧步不是球员移动的方向。。。Jamesla有没有一个原因让你不能只做
moveDirection=(transform.position-prevLoc)