Как изменить значение на ноль, но не в первой итерации цикла - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь реализовать поворот передних колес в PyBox2D, на данный момент мне удалось повернуть его влево / вправо, но я не могу остановить его, когда угол достигает нуля (чтобы заставить машину ехать прямо)

class Car:
    def __init__(self):
        creating of a car

    def control(self)
        if keyboard.is_pressed("a"):
            Car.Suspensions[2].motorSpeed = -5
            Car.Suspensions[3].motorSpeed = -5


            if Car.Tires[2].wheel.angle != 0:
                if -np.radians(5) <= Car.Tires[2].wheel.angle <=  np.radians(5):
                    Car.Suspensions[2].motorSpeed = 0
                    Car.Suspensions[3].motorSpeed = 0

        elif keyboard.is_pressed("d"):
            Car.Suspensions[2].motorSpeed = 5
            Car.Suspensions[3].motorSpeed = 5

            if Car.Tires[2].wheel.angle != 0:
                if -np.radians(5) <= Car.Tires[2].wheel.angle <=  np.radians(5):
                    Car.Suspensions[2].motorSpeed = 0
                    Car.Suspensions[3].motorSpeed = 0  

Моя цель - остановить поворот, когда угол поворота колеса достигает нуля или значения, аналогичного нулю, но не в начале (иногда, когда углы равны нулю, они вообще не двигаются, и есливозможно, я хотел бы сделать это независимым от нажатия клавиши на клавиатуре (перемещение этих двух вложенных, если операторы из части if keyboard_is_pressed (hotkey) не помогли

Я надеюсь, что я дал понять и большое спасибоза любую помощь

1 Ответ

1 голос
/ 22 октября 2019

Если я правильно понимаю, вы можете иметь переменную, скажем, on_starting_race, установить в false, а затем проверять всякий раз, когда она превышает заданное число (скажем, когда она превышает 10, вы знаете, что гонка уже началась иавтомобиль переместился как минимум на несколько секунд), затем измените это значение на True, теперь добавьте оператор if, чтобы определить, близко ли это значение к 0 (скажем, val <5), а on_starting_race - True. Возможно, есть более элегантный способ, но он довольно прост (если вы проверяете состояние автомобиля каждый кадр или установленный период времени). </p>

...