【发布时间】:2015-05-02 09:57:42
【问题描述】:
我做了一些冲突的 if 语句,但它们不起作用。
birdbox3.X += 5;
birdbox3.Y -= 5;
if (birdbox3.Intersects(Banner1)) {
birdbox3.Y += 10;
}
else if (birdbox3.Intersects(Banner2)) {
birdbox3.Y = -birdbox3.Y; }
因此,如果我们采用第一个语句,则框最初位于左下角。根据我的代码,理想情况下它会在我的游戏中向右+向上,一旦它碰到最顶部的横幅,它应该向下+向右,因此 X 和 Y 位置都会增加。但是发生的情况是开始弹跳非常快,在调试之后我意识到它永远卡在第一个 if 中,几乎就像它碰撞了 2 次,将 Y 恢复到它的初始运动,第 3 次碰撞,然后重新执行该过程及以上。
这给我们带来了一个问题,我怎样才能让更新代码运行得慢一点,或者在半秒左右之后,所以当它运行时,它不会误解碰撞?非常感谢!
【问题讨论】:
-
你可以使用 Thread.Sleep()
-
@Jamaxack 不,会冻结 Game 的线程。我认为您不想在每次更新对象时锁定游戏。把它想象成在一个 winform/WPF 应用程序中冻结你的 UI。
标签: c# xna collision game-physics