Melompat
Termasuk bagian Aturan Game dalam perjalanan Pygame di Coddy. Pelajaran 24 dari 29.
Lompatan adalah kecepatan ke atas yang dikurangi oleh gravitasi. Beri pelari kecepatan vertikal, vy. Setiap frame, gravitasi menambahkan 1 padanya dan pelari bergerak sejauh nilai itu:
def update(self):
self.vy += GRAVITY
self.rect.y += self.vy
if self.rect.bottom >= GROUND_Y:
self.rect.bottom = GROUND_Y
self.vy = 0y bertambah ke bawah, jadi lompatan menetapkan vy = -16: pelari naik 15 piksel, lalu 14, lalu 13, melambat hingga berhenti sekitar 120 piksel di atas, kemudian jatuh kembali semakin cepat. Saat mencapai garis tanah, posisinya diatur tepat di garis itu dan ia berhenti.
Lompat hanya dari tanah. Tanpa pemeriksaan itu, setiap tekanan tombol di udara akan memulai lompatan baru, dan pelari bisa terus naik tanpa batas:
def jump(self):
if self.rect.bottom == GROUND_Y:
self.vy = -16Bagian 5 mengembangkan ini dengan platform untuk tempat mendarat.
Tantangan
Sedang- Tambahkan
GRAVITY = 1danself.vy = 0ke runner. - Tulis
update()seperti yang ditunjukkan, lalu panggilrunner.update()di setiap frame, sebelum menggambar. - Tulis
jump():vy = -16, hanya saat runner berada di tanah. - Tombol Space atau Up memanggil
runner.jump().
Coba sendiri
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 320))
pygame.display.set_caption("Sky Runner")
clock = pygame.time.Clock()
SKY = (140, 200, 240)
GROUND = (90, 160, 80)
GROUND_Y = 260
class Runner(pygame.sprite.Sprite):
def __init__(self):
super().__init__()
self.image = pygame.image.load("assets/images/player.png").convert_alpha()
self.rect = self.image.get_rect(midbottom=(100, GROUND_Y))
runner = Runner()
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
screen.fill(SKY)
pygame.draw.rect(screen, GROUND, (0, GROUND_Y, 640, 60))
screen.blit(runner.image, runner.rect)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Aturan Game
Latihan sendiri: Playground Pygame