初始化bool会干扰我的逻辑
我正在研究这种处理碰撞检测的方法。 我有一个方向bool被初始化为true的问题。 有时,当射击一个物体时,角度会反转,因为它期望bool是假的。
如果对象最初瞄准左侧(在我的代码中介于0和350之间),那么bool应该是真的。 如果它是针对右边(350到700之间),那么bool应该是假的。
如何在不干扰后续碰撞检测的情况下将初始bool设置为适当的true / false值?
我认为问题是当我尝试检查方向应该是什么时,然后设置它,我无意中对对象施加约束。 我无法弄清楚如何将两者分开。 理想情况下,0到350之间的检查以及350到700之间的检查应该只发生一次,但每次调用方法时都会检查它们,这会导致问题。
//Move bubble public void MoveBubble(Bubble bubble, Vector2 distance) { if (bubble.stop == false) { velocityX = speed * distance.X; velocityY = speed * distance.Y; bubble.X += velocityX; //Problem section if (bubble.Y > 0 && bubble.Y 350 && bubble.Y < 700) direction = false; //End Problem section if (direction == true) bubble.Y += velocityY; if (direction == false) bubble.Y -= velocityY; if (bubble.Y = 350) direction = !direction; } }
固定代码:
//Move bubble and reverse it's velocity if it collides with a wall internal void MoveBubble(Bubble bubble, Vector2 distance) { if (bubble.stopped == false) if (bubble.Y 350) bubble.velocityY = -bubble.velocityY; bubble.Y += bubble.velocityY; bubble.X += bubble.velocityX; }
在移动气泡之前,您必须检查气泡的位置。 在移动结束时你拥有它的位置,你可能超出了屏幕的范围。
解释我的意思
我在这看到你做的是:
- 寻找你要移动的方向
- 移动泡泡
- 检查泡沫是否必须改变方向
在mi看来,你要做的是
- 检查要遵循的方向
- 移动泡泡
当您开始另一个动作时,您将检查气泡必须采取的方向
我会说你不应该使用布尔值,而是使用枚举:
enum Direction { Unknown, Left, Right }
因此,您可以将其初始化为未知并在代码中对其进行测试。
上述就是C#学习教程:初始化bool会干扰我的逻辑分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1001128.html