当前位置:网站首页>unity2d的Rigidbody2D的MovePosition函数移动时人物或屏幕抖动问题解决

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

2022-07-07 16:51:00 Cingke是真的

这是一个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移动一次;
    }

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

 private void LateUpdate()
    {
    
        controlHero();
    }
}

好吧放在Update也可以

原网站

版权声明
本文为[Cingke是真的]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_44562033/article/details/125474730