2 个圆形碰撞器导致玩家移动滞后

2 circle colliders causing lag in player movement

我正在用 Unity 2d 制作一个游戏,如果你在磁铁的范围内,你就会被它吸引。连接到玩家的是 2 个圆形碰撞器:一个设置为触发器,半径可以增加或减小以改变磁铁的范围,另一个未设置为触发器以允许它停留在平台上。我正在使用此代码:transform.Translate(3 * Time.deltaTime, 0, 0); 来推动玩家前进。玩家在接触地面时动作确实很滞后,但在空中时更流畅。导出项目后,相机运动如丝般顺滑,所以我不认为这是因为我的电脑速度很慢,只有播放器很慢。有人可以帮我解决这个问题吗?另外需要注意的是,去掉其中一个circle collider后,运动是平滑的,所以不是代码的问题。

我认为主要问题是与地面的碰撞导致 transform.Translate 出现问题。我建议进行一些更改:

改变触发器 你应该用磁铁上的触发器移动碰撞,如果你想添加新的磁铁,将来会更容易,你也会看到我更改后的应用程序

增加力量 与其执行 transform.Translate,不如添加一个力,这样您就可以保持物理效果良好,而且不会看起来有问题! 你应该这样做:

FixedUpdate()
{
   rb.AddForce(Vector2.Distance(transform.position, player.position) * 2);
   
}

我们使用 FixedUpdate() 是因为它可以保持物理效果良好,rb 是玩家的刚体,Vector2.distance 可以是 Vector2.right,这取决于您的想象。如果你工作距离较近,力量会增加。