首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化bool会干扰我的逻辑

初始化bool会干扰我的逻辑
EN

Stack Overflow用户
提问于 2011-05-03 19:55:22
回答 2查看 304关注 0票数 0

我正在研究这种处理碰撞检测的方法。我对初始化为true的方向bool有问题。有时,当激发一个对象时,角度是颠倒的,因为它期望bool为false。

如果对象最初指向左侧(在我的代码中介于0和350之间),那么bool应该为true。如果指向右侧(在350和700之间),则布尔值应该为false。

如何在不影响后续碰撞检测的情况下将初始bool设置为适当的true/false值?

我认为问题是当我尝试检查方向,然后设置它时,我无意中对对象施加了约束。我想不出怎么把这两者分开。理想情况下,0到350之间的检查和350到700之间的检查应该只发生一次,但每次调用方法时都会检查它们,这就是导致问题的原因。

代码语言:javascript
复制
//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)
                direction = true;

            if (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 <= 0 || bubble.Y >= 350)
                direction = !direction;
        }
    }    

修复代码:

代码语言:javascript
复制
    //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 < 0 || bubble.Y > 350)
                bubble.velocityY = -bubble.velocityY;

            bubble.Y += bubble.velocityY;
            bubble.X += bubble.velocityX;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-03 20:06:07

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

解释我的意思

我看到你在这里做的是:

  1. 查找您要移动的方向
  2. 移动气泡
  3. 检查气泡是否必须更改方向

在我看来,你要做的是

检查方向跟随气泡移动

当你开始另一个移动时,你需要检查气泡的方向。

票数 1
EN

Stack Overflow用户

发布于 2011-05-03 20:03:43

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

代码语言:javascript
复制
 enum Direction
 {
     Unknown,
     Left,
     Right
 }

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5869071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档