1

我有一个问题,如果外部条件(正在自动评估)为假,我想(通过 0.01 的增量)从 0 到 1(该位很容易),如果条件为真,则停止计数器。

条件是两个对象之间是否发生了碰撞。我知道这部分工作正常,因为我已经手动并在循环中对其进行了测试。但是如果发生碰撞,停止计数器被证明是棘手的。我敢肯定,我错过了一些非常简单的事情。

   def autoHandClose():
   global collisionDeteched # this is set to false but on collision correctly changes to true
   counter = 0 
   for x in range(100):
     if collisionDeteched == False:
        counter = counter + 0.01
        h.setGesture(hand.GESTURE_FIST, closeThumb=True, weight = counter)
     else:
      break

权重参数是从 0 到 1(因此我想从 0 到 1 来关闭手)我可以关闭手但如果检测到碰撞则无法让它停止。此方法分配给键盘按钮按下。

我猜逻辑是错误的,对吧?

4

1 回答 1

1

检查是否在此循环的并行线程上运行“collisionDetected”?如果不是,您将永远不会退出循环,因为 collisionDetected 的值将永远不会更新。是这样吗?

另外附注:

您可能希望更改您的 for 循环,使其看起来更像这样,以使您的代码更清晰:

for counter in range(0,1,0.01):
   ...

这将减少在循环中设置计数器的需要。

于 2013-07-11T17:47:44.247 回答