Skip to content

Commit

Permalink
마지막으로 공격 모션 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
MineEric64 committed Sep 10, 2023
1 parent fa8f540 commit ae9f827
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 36 deletions.
Binary file added assets/images/chr_player_attack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/chr_player_attack_bak.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/chr_player_stay.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/chr_player_stay_bak.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/chr_player_walk.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/chr_player_walk_bak.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion components/sprites/sprite.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,15 @@ def __init__(
self.index = 0
self.image = self.images[self.index] # 애니메이션의 현재 이미지

def update(self, added_index = 1):
def update(self, added_index = 1, init = False):
"""
캐릭터의 이미지가 계속 반복해서 나타나도록 하여 애니메이션의 느낌을 주도록 합니다.
:param: added_index: 스프라이트를 업데이트할 때 어느만큼 업데이트할건지 지정하는 변수, 값에 따라 일부 프레임이 스킵될 수 있음
:init: index를 초기화할건지의 여부입니다.
"""
if init:
self.index = 0

self.index += added_index # index 업데이트

if self.index >= len(self.images): # index가 범위를 벗어난 경우
Expand Down
59 changes: 24 additions & 35 deletions screens/ingame.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,17 @@ def __init__(self):
{
"stay": SpriteHandler(
Sprite(
"assets/images/chr_player_stay.png", 4, 1, size=(170, 270)
"assets/images/chr_player_stay.png", 4, 1, size=(170, 370)
)),
"walk": SpriteHandler(
Sprite(
"assets/images/chr_player_walk.png", 6, 1, size=(345, 270)
))
"assets/images/chr_player_walk.png", 6, 1, size=(345, 370)
)),
"attack": SpriteHandler(
Sprite(
"assets/images/chr_player_attack.png", 6, 1, size=(330, 370)
)
)
},
"stay",
position=(200, 347),
Expand All @@ -64,18 +69,6 @@ def __init__(self):
self.player.grace_period = GracePeriod()
self.player.name = "player"

# FX
self.fx = SpriteCollection({
"attack": SpriteHandler(
Sprite(
"assets/images/fx_attack.png", 9, 1, size=(150, 150)
)
)
},
"attack",
position=(200, 225),
scale=0.6)

# 기타 아이템
self.sign = Texture("assets/images/sign_big.png", (300, 100), 0.4)
self.hp = SpriteCollection({
Expand All @@ -101,14 +94,17 @@ def process_ingame_movement():
if CONFIG.is_movable(): # 플레이어가 움직일 수 있을 때 (상호작용 포함)
is_moved = False

if keys[pygame.K_a] or keys[pygame.K_LEFT]: # 왼쪽으로 이동
self.player.move_x(-1)
is_moved = True
if keys[pygame.K_d] or keys[pygame.K_RIGHT]: # 오른쪽으로 이동
self.player.move_x(1)
is_moved = True

if is_moved:
if not self.player.attack:
if keys[pygame.K_a] or keys[pygame.K_LEFT]: # 왼쪽으로 이동
self.player.move_x(-1)
is_moved = True
if keys[pygame.K_d] or keys[pygame.K_RIGHT]: # 오른쪽으로 이동
self.player.move_x(1)
is_moved = True

if self.player.attack:
self.player.sprites.status = "attack"
elif is_moved:
self.player.sprites.status = "walk"
else:
self.player.sprites.status = "stay"
Expand Down Expand Up @@ -211,14 +207,6 @@ def process_ingame(event: pygame.event.Event):
sprite_player = self.player.sprites.get_sprite_handler().sprite
self.player.apply_movement_flipped(sprite_player)
# endregion
# region FX
fx_sprite = self.fx.get_sprite_handler().sprite
fx_x = self.player.x + (10 if not fx_sprite.flipped else -40)

self.fx.set_pos((fx_x, self.player.y))
self.player.apply_movement_flipped(fx_sprite) # 플레이어 움직임에 따라서 FX 움직임 동기화
# endregion

# hp 이벤트 처리 후 hp 애니메이션 index 변수 갱신
hp_indicies = self.process_hp_event(hp_attacked_index, hp_healed_index)
hp_attacked_index = hp_indicies[0]
Expand Down Expand Up @@ -255,15 +243,16 @@ def process_ingame(event: pygame.event.Event):

# region 공격
if self.player.attack: # 공격을 한 경우
if self.fx.status != "attack":
self.fx.status = "attack"
handler = self.fx.get_sprite_handler()
handler = self.player.sprites.get_sprite_handler()

if handler.sprite.index != handler.sprite.length - 1:
handler.group.draw(CONFIG.surface)
else:
handler.sprite.update()
self.player.attack = False
handler.sprite.update()

if count % 3 == 0:
handler.sprite.update()
# endregion
# region 사망 이벤트
if CONFIG.game_dead: # 최적화
Expand Down

0 comments on commit ae9f827

Please sign in to comment.