按住按钮时,玩家在墙上抖动


17

因此,我正在制作自上而下的RPG。

一切都很好,但是这个问题很烦人。现在,当角色靠墙移动时,玩家会来回抖动。我猜这是因为玩家试图移动到墙壁上,然后墙壁碰撞将其推回原位,这使人烦恼地来回移动。我的问题显然是,如何阻止这种情况发生?

谢谢!

PS:我正在使用transform.translate移动播放器,并且正在使用C#。

编辑:我也在使用2D刚体和两者上的2Dbox对撞机。


翻译前,您只需要进行扫描测试
MickLH 2016年


哦。嗯...我不确定如何在Unity C#中添加它。我是C#的新手。如果您有知识,可以介意解释如何执行此操作吗?
GMR516'6

Answers:


51

之所以发生抖动,是因为您使用Transform.Translate将玩家扭曲到墙壁上,而物理步骤是说:“嘿,我们在墙壁上。让我们解决这个碰撞问题,然后将玩家从墙壁上推回去。 。”

为了避免这种情况,在使用Rigidbody2D时,建议使用Rigidbody2D.MovePosition。这样可以确保在移动时不会有重叠的碰撞器。如果对撞机和刚体由于某种原因而无法移动,则不会抖动。

使用Rigidbody2D.MovePosition,您可能需要设置Rigidbody2D.interpolation值,以使运动看起来很平滑。

但是,如果由于某些原因Rigidbody2D.MovePosition对于您的游戏而言并不理想,并且您仍想使用Transform.Translate,请使用Physics2D.Raycast(或其他Physics2D投射)查看移动是否会让您撞墙,以及仅在没有撞墙的情况下移动。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.