gpt4 book ai didi

python - 如何将值更改为零但不在循环的第一次迭代中

转载 作者:行者123 更新时间:2023-12-02 06:50:35 24 4
gpt4 key购买 nike

我正在尝试在 PyBox2D 中实现前轮的转动,目前,我能够使其左转/右转,但当角度达到零时我无法停止它(以使汽车直行)

我的目标是当轮子的角度达到零或接近于零的值时停止转动,但不是在开始时停止(有时当角度为零时它们根本不移动,如果可能的话我想使它独立于键盘上的按键(将这两个嵌套的 if 语句移出 if Keyboard_is_pressed(hotkey) 部分没有帮助

我希望我说清楚了,非常感谢您的帮助

编辑我尝试实现答案中给出的解决方案,它有点有效,但我尝试改进它,现在我再次卡住了,轮子转动,但是当它们返回到初始位置时他们停止移动。问题之一可能是,当我按“a”或“d”键时,我的变量 self.ticking 的变化不止 1,因为我无法在这么短的时间内按下该键。

变量 self.on_the_beginning 相当于下面答案中的 on_starting_race:

    def control(self): # This makes control independent from visualisation
#Front left suspension: index 2
#Front right suspension: index 3
print(self.ticking)
if keyboard.is_pressed("a"):
self.suspensions[2].motorSpeed = -5
self.suspensions[3].motorSpeed = -5
self.ticking -= 1


if keyboard.is_pressed("d"):
self.suspensions[2].motorSpeed = 5
self.suspensions[3].motorSpeed = 5
self.ticking += 1


if self.ticking <= -3:
self.ticking = -3
self.on_the_beginning = True

elif self.ticking >= 3:
self.ticking = 3
self.on_the_beginning = True

if np.radians(-5) <= self.tires[2].wheel.angle <= np.radians(5) and self.on_the_beginning == True and self.ticking !=0:
self.suspensions[2].motorSpeed = 0
self.suspensions[3].motorSpeed = 0
self.tires[2].SetAngularVelocity = 0
self.tires[3].SetAngularVelocity = 0
self.ticking = 0
on_the_beginning = False

最佳答案

如果我理解正确的话,你可以有一个变量,比如 on_starting_race,设置为 false,然后检查它是否高于设定的数字(比如,当它高于 10 时,你就知道比赛已经开始了,并且汽车至少移动了几秒钟),然后将该值更改为 True,现在添加一个 if 语句来确定该值是否接近 0(假设 val<5)并且 on_starting_race 为 True。可能有一种更优雅的方法,但这非常简单(假设您每帧或设定的时间段检查汽车的状态)。

关于python - 如何将值更改为零但不在循环的第一次迭代中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58508514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com