Kecepatan Jatuh Maksimum
Termasuk bagian Dunia Game dalam perjalanan Pygame di Coddy. Pelajaran 13 dari 35.
Gravitasi terus menambah kecepatan jatuh. Jika jatuh dari tempat yang cukup tinggi, pemain bergerak 30 atau 40 piksel dalam satu frame. Tinggi sebuah ubin adalah 36 piksel, jadi pada kecepatan itu pemain bisa menembus platform di antara dua frame tanpa pernah bertumpang tindih dengannya.
Jatuh sungguhan juga memiliki kecepatan maksimum. Batasi kecepatan dengan min:
MAX_FALL = 12
# di dalam perulangan
vel_y = min(vel_y + GRAVITY, MAX_FALL)min memberikan nilai yang lebih kecil dari kedua angka tersebut, sehingga kecepatan bertambah 1 setiap frame sampai mencapai 12, lalu tetap pada angka itu. Lompatan dimulai pada -15, di bawah batas maksimum, jadi lompatan tidak berubah.
Dua belas adalah sepertiga tinggi ubin: apa pun yang menjadi tempat pemain mendarat, pada salah satu frame pemain akan bertumpang tindih dengannya, dan pemeriksaan pendaratan dapat mendeteksinya.
Tantangan
Mudah- Tambahkan
MAX_FALL = 12di bagian atas. - Ganti
vel_y += GRAVITYdenganvel_y = min(vel_y + GRAVITY, MAX_FALL).
Pemain mulai di udara, jadi kamu bisa melihatnya mencapai kecepatan maksimum.
Coba sendiri
import pygame
TILE = 36
FLOOR = 324
GRAVITY = 1
JUMP = -15
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Falling Speed")
clock = pygame.time.Clock()
background = pygame.image.load("assets/backgrounds/clouds.png").convert_alpha()
grass_img = pygame.image.load("assets/images/grass.png").convert_alpha()
player_img = pygame.image.load("assets/images/player.png").convert_alpha()
player = player_img.get_rect(topleft=(264, 40))
vel_y = 0
on_ground = False
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.KEYDOWN and event.key in (pygame.K_SPACE, pygame.K_UP):
if on_ground:
vel_y = JUMP
elif event.type == pygame.KEYUP and event.key in (pygame.K_SPACE, pygame.K_UP):
if vel_y < -4:
vel_y = -4
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
vel_y += GRAVITY
player.y += vel_y
on_ground = False
if player.bottom > FLOOR:
player.bottom = FLOOR
vel_y = 0
on_ground = True
for y in range(0, 360, 72):
for x in range(0, 576, 72):
screen.blit(background, (x, y))
for x in range(0, 576, TILE):
screen.blit(grass_img, (x, FLOOR))
screen.blit(player_img, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Semua pelajaran di Dunia Game
1Peta dari Teks
Level dalam TeksBaris dan KolomHuruf yang Memiliki MaknaTempat Pemain MemulaiSatu Layar Setiap Kali3Gravitasi dan Melompat
Jatuh karena GravitasiMelompat dari TanahLompatan PendekKecepatan Jatuh MaksimumPenyangga LompatanLatihan sendiri: Playground Pygame