Я экспериментирую с физикой для игры и хотел попробовать, как вы можете ускорить.
Мой текущий код такой
def left(self):
self.x -= 1 * self.xvelocity
if not self.xvelocity == 10:
self.xvelocity += 1
def right(self):
self.x += 1 * self.xvelocity
if not self.xvelocity == 10:
self.xvelocity += 1
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
keys_pressed = pygame.key.get_pressed()
if keys_pressed[pygame.K_LEFT]:
player.left()
if keys_pressed[pygame.K_RIGHT]:
player.right()
Я хочу сбросить xvelocity обратно на 0 если правая или левая клавиша отпущена. На данный момент этого не происходит, поэтому, если вы двигаетесь вправо и ускоряетесь, а затем двигаетесь влево, у вас все еще остается та же скорость.
Я попытался исправить это, добавив следующее:
def left(self, *args):
if args:
self.x -= 1 * self.xvelocity
if not self.xvelocity == 10:
self.xvelocity += 1
else:
self.xvelocity = 0
def right(self, *args):
if args:
self.x += 1 * self.xvelocity
if not self.xvelocity == 10:
self.xvelocity += 1
else:
self.xvelocity = 0
Но я не могу получить эффект ускорения снова, если вы меняете направление. Я что-то упустил?