【发布时间】:2012-09-01 11:51:44
【问题描述】:
我正在 XNA 中开发一个 2d 游戏,我目前正在学习我的物理课。我目前的任务是在一个物体与另一个物体碰撞时停止它。 当两个物体发生碰撞时,我已经让我的游戏调用这个函数:
public void BlockMovement(gameObject target) {
//you can call width by just typing width. same for height
owner.position.X += (owner.position.X - target.position.X);
owner.position.Y += (owner.position.Y - target.position.Y);
}
问题在于,而不是停止。移动的物体被推回它的宽度。 有人可以告诉我/告诉我如何做到这一点,我在许多项目中已经坚持了很长时间。
谢谢
【问题讨论】:
-
您是否在其他地方进行碰撞检查?如果你想停下来,为什么不把速度归零呢?如果没有看到您的游戏对象详细信息或至少您如何更新位置,很难说出如何让事情停止。
-
是的,我不确定为什么在 BlockMovement() 上您要尝试移动对象的 X 和 Y 位置。您可能希望它完全停止移动,除非您试图让它弹跳或其他什么。您是否有更多代码,以便我们更好地了解您需要更改的内容?
标签: c# xna physics blocking collision