반응형
이번에는 전투 시 UI를 업데이트를 진행하였습니다.
아직 일러스트레이터를 구하지 못해서 단순하게만 구현한 점 양해 부탁드립니다.
결과물 화면
위쪽 빨간색이 체력, 파란색이 주력에 해당하는 부분이고, 검정색이 캐릭터입니다.
체력바, 주력바 관리
체력과 주력이 닳은 모습입니다.
체력의 경우, 추후 제공될 반전술식이라는 아이템 효과때문에 초당 0.1씩만 회복되어 천천히 오르도록 설정해두었고,
주력의 경우, 전투 중 술식을 꾸준히 사용하되 남발하지 못하게 하기 위해 초당 10씩 차오르게 설정하였습니다.
체력, 주력이 차오르는것을 time모듈의 sleep를 사용하면 다른 키를 누를 수 없기 때문에
threading 모듈을 import해서 캐릭터가 움직이는 상태에도 상태바를 업데이트 할 수 있도록 하였습니다.
상태 쓰레드 컨트롤
def increase_hp(): # 체력 자동 회복
global HP
while True:
if HP >= 200:
HP = 200
elif HP < 0:
HP = 0
else:
HP += 0.1
time.sleep(1)
def increase_mp(): # 주력 자동 회복
global MP
while True:
if MP >= 500:
MP = 500
elif MP <0:
MP = 0
else:
MP += 10
time.sleep(1)
# HP 증가를 담당하는 쓰레드를 생성하고 시작합니다.
hp_thread = threading.Thread(target=increase_hp)
hp_thread.daemon = True # 메인 프로그램 종료 시 쓰레드도 종료되도록 설정
hp_thread.start()
# MP 증가를 담당하는 쓰레드를 생성하고 시작합니다.
mp_thread = threading.Thread(target=increase_mp)
mp_thread.daemon = True # 메인 프로그램 종료 시 쓰레드도 종료되도록 설정
mp_thread.start()
캐릭터 관리
캐릭터는 기본적으로 WASD키를 이용해서 움직이도록 설계하였습니다.
다른 게임들과 동일하게 W - 점프, A - 왼쪽이동 S - 웅크리기 D - 오른쪽 이동의 기능을 가지고 있습니다.
평소에 서 있는 상태입니다.
위 사진은 웅크리기를 했을 때 Y축 크기를 절반으로 바꾼 상황입니다.
그림도 웅크렸을 때의 모션으로 바뀝니다.
점프를 했을 때는 이정도 점프를 할 수 있으며, 점프 상태에서는 점프키를 더 눌러도 계속 올라가지 않습니다.
캐릭터 통제 코드
# 왼쪽 이동
if keys[pg.K_a] and char_x - char_vel > 0:
char_x -= char_vel
# 오른쪽 이동
if keys[pg.K_d] and char_x + char_vel < screen_width - char_width:
char_x += char_vel
if not is_jumping:
# 점프
if keys[pg.K_w]:
is_jumping = True
# 웅크리기
if keys[pg.K_s]:
if not is_crouching:
is_crouching = True
char_y += char_height // 2 # 웅크릴 때 캐릭터 위치 조정
char_height = 75 # 웅크린 상태에서 캐릭터 높이 감소
sit = pg.transform.scale(sit,(char_width,char_height))
charit = sit
else:
if is_crouching:
is_crouching = False
char_y -= char_height # 원래 위치로 돌아가기 위해 char_height를 빼줌
char_height = 150 # 캐릭터 높이 원래대로
stand = pg.transform.scale(stand,(char_width,char_height))
charit = stand
else:
if jump_count >= -10: # 점프 중일 때
neg = 1
if jump_count < 0:
neg = -1 # 점프의 상승과 하강 조절
char_y -= (jump_count ** 2) * 0.5 * neg # 포물선 운동
jump_count -= 1
else:
is_jumping = False # 점프 종료
jump_count = 10 # 점프 카운트 초기화
728x90
반응형
'SSU::DoCode 프로젝트 1' 카테고리의 다른 글
[SSU::DoCode] #05 전투 UI 업데이트 및 여러가지 (0) | 2024.09.11 |
---|---|
[SSU::DoCode] # 04 타이틀 화면과 버튼 - 1 (0) | 2024.08.24 |
[SSU::DoCode] # 02 스킬 코딩 - 좌살박도(알고리즘 코딩) (0) | 2024.08.06 |
[SSU::DoCode] # 01게임 제작 시작 및 세부 설정 기획 (0) | 2024.08.06 |