EPguy
[python] pygame을 이용한 2D 캐릭터 이동 및 점프 구현하기 본문
import pygame
pygame.init()
WHITE = (255, 255, 255)
WIDTH, HEIGHT = 500, 500
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
GRAVITY = 0.7
PLAYER_RUN_SPEED = 2
PLAYER_JUMP_SPEED = 6
PLAYER_MASS = 0.7
class Character:
def __init__(self, image, run_speed, jump_speed):
self.original_image = image
self.image = image
self.rect = image.get_rect()
self.movement = 0
self.direction = 1
self.run_speed = run_speed
self.jump_speed = jump_speed
self.isJump = False
def isGround(self):
return self.rect.y >= HEIGHT - self.image.get_height()
def gravity(self):
if(not self.isGround()):
self.rect.y += GRAVITY
def move(self):
if(self.movement != 0):
self.direction = self.movement / abs(self.movement)
self.flip_image()
self.rect.x += self.movement
if(self.isJump):
F = 0
if self.jump_speed > 0:
F = -(0.5 * PLAYER_MASS * (self.jump_speed ** 2))
else:
F = (0.5 * PLAYER_MASS * (self.jump_speed ** 2))
if(self.rect.y + F > HEIGHT - self.image.get_height()):
self.rect.y = HEIGHT - self.image.get_height()
else:
self.rect.y += F
self.jump_speed -= 0.5
if(self.isGround()):
self.jump_speed = PLAYER_JUMP_SPEED
self.isJump = False
def flip_image(self):
if self.direction == -1:
self.image = self.original_image.copy()
else:
self.image = pygame.transform.flip(self.original_image, True, False)
def jump(self):
if(self.isGround()):
self.isJump = True
def update(self):
self.gravity()
self.move()
player = Character(pygame.image.load("./image/player.png"), PLAYER_RUN_SPEED, PLAYER_JUMP_SPEED)
player.rect.y = HEIGHT - player.image.get_height()
while True:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
player.movement = PLAYER_RUN_SPEED
if event.key == pygame.K_LEFT:
player.movement = -PLAYER_RUN_SPEED
if event.key == pygame.K_SPACE:
player.jump()
if event.type == pygame.KEYUP:
if event.key == pygame.K_RIGHT:
player.movement = 0
if event.key == pygame.K_LEFT:
player.movement = 0
screen.fill(WHITE)
player.update()
screen.blit(player.image, player.rect)
pygame.display.update()
https://github.com/EPguy/pygame_2d_character_movement
GitHub - EPguy/pygame_2d_character_movement: pygame을 이용한 캐릭터 이동 및 점프 구현
pygame을 이용한 캐릭터 이동 및 점프 구현. Contribute to EPguy/pygame_2d_character_movement development by creating an account on GitHub.
github.com
'개발 > Python' 카테고리의 다른 글
[Python] 회전하는 3D 큐브 만들기 (0) | 2024.03.04 |
---|---|
[Python] ModuleNotFoundError: No module named 'Crypto' (0) | 2024.02.29 |