Csharp/C#教程:初始化bool会干扰我的逻辑分享


初始化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; } 

在移动气泡之前,您必须检查气泡的位置。 在移动结束时你拥有它的位置,你可能超出了屏幕的范围。

解释我的意思

我在这看到你做的是:

  1. 寻找你要移动的方向
  2. 移动泡泡
  3. 检查泡沫是否必须改变方向

在mi看来,你要做的是

  1. 检查要遵循的方向
  2. 移动泡泡

当您开始另一个动作时,您将检查气泡必须采取的方向

我会说你不应该使用布尔值,而是使用枚举:

  enum Direction { Unknown, Left, Right } 

因此,您可以将其初始化为未知并在代码中对其进行测试。

上述就是C#学习教程:初始化bool会干扰我的逻辑分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1001128.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐