当前位置:   article > 正文

unity2d的Rigidbody2D的MovePosition函数移动时人物或屏幕抖动问题解决_rigidbody2d.moveposition

rigidbody2d.moveposition

这是一个2d刚体移动函数

public void controlHero()
    {
        if ((ETCInput.GetAxis("Vertical") != 0) || (ETCInput.GetAxis("Horizontal") != 0)){
            rigidbody2D.MovePosition(rigidbody2D.position+Time.fixedDeltaTime*new Vector2(ETCInput.GetAxis("Horizontal"),ETCInput.GetAxis("Vertical")) * speed );
        }
        //众所周知,人物移动时乘以Time.fixedDeltaTime,相当于逻辑在FixedUpade中调用,每间隔0.02s移动一次;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我一开始是放在FixedUpdate()中调用,结果不出意外地人物抖动了,改了很多次,以为是移动是不够平滑,后来才知道,要考虑相机的跟随渲染,一般的相机跟随都放在了LateUpdate里,而我用的cinemachine也是在LateUpdate里,果断改成了在LateUpdate里调用移动函数,不抖动了。

 private void LateUpdate()
    {
        controlHero();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

好吧放在Update也可以

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/89600
推荐阅读
相关标签
  

闽ICP备14008679号