Я не могу понять, почему мой игрок не прыгает. Я определил функции jump
и update
следующим образом:
def jump(self):
if self.is_jumping == False:
self.is_jumping = True
def update(self):
if self.is_jumping:
self.y -= self.force
Вот инициализация
class Myman:
def __init__(self, x, y, side):
self.x = x
self.y = y
self.side = side
self.speed = 2
self.is_jumping = False
Я реализовал это в основном l oop следующим образом:
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
mm.jump()
d.fill((98, 98, 98))
mm.draw()
mm.g()
mm.update()
if mm.y + mm.side > 550:
mm.y = 550 - mm.side
mm.falling = False
Однако, когда я пытаюсь прыгнуть, это не работает. Все примеры, которые я видел в прыжках до сих пор, делали то же самое, но мой не работает, и я не могу понять, почему. Спасибо за помощь.
Вот код для тех, кто хотел бы проверить для справки.
import pygame, os
os.environ["SDL_VIDEO_CENTERED"] = "1"
pygame.init()
win = pygame.display
d = win.set_mode((1200, 600))
win.set_caption("Jump")
gravity = 0.1
class Myman:
def __init__(self, x, y, side):
self.x = x
self.y = y
self.side = side
self.speed = 2
self.is_jumping = False
self.force = 2
def draw(self):
pygame.draw.rect(d, (0 ,255, 0), (self.x, self.y, self.side, self.side))
def g(self):
global gravity
self.y += gravity
gravity += 0.01
def move_left(self):
self.x -= self.speed
def move_right(self):
self.x += self.speed
def jump(self):
if self.is_jumping == False:
self.is_jumping = True
def update(self):
if self.is_jumping:
self.y -= self.force
mm = Myman(600, 400, 20)
def platform():
pygame.draw.rect(d, (0 ,0, 0), (0, 550, 1200, 50))
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
mm.jump()
d.fill((98, 98, 98))
mm.draw()
mm.g()
mm.update()
platform()
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT]:
mm.move_right()
if keys[pygame.K_LEFT]:
mm.move_left()
if mm.y + mm.side >= 550:
mm.y = 550 - mm.side
mm.falling = False
win.flip()