IT 대장간
게임만들기 - [2] 캐릭터 이동, 프레임, 충돌처리 본문
4. 캐릭터 이동

1) 좌표이동에 대한 변수 선언 (to_x, to_y_
2) 키 입력 이벤트를 받는 event.key에 입력값에 대한 반응을 추가한다
- KEYDOWN은 키가 눌린 상태를 의미
- KEYUP은 키 입력을 멈췃을때를 의미
- 키보드 입력을 멈췃을떄 to_x,y = 0 을 통해 이동을 중지
3) 조작 완료 후 캐릭터 현재 좌표값인 (character_x(y))_pos 변수에 이동 된 만큼(+) 값을 저장

4) 캐릭터가 화면 바깥으로 사라지는 것을 막기위해 while문 바로 하단 경로에 위와같이 처리
: 오른쪽이동과 아래쪽이동을 보면 일부 상쇄되는 계산식이 있는데
그 이유는,
캐릭터의 좌표역시 좌측상단꼭지점을 기준으로 잡히는거다보니까 좌측상단이 화면밖으로 넘어가지않고
걸치는 경우가 발생함

5. 프레임




1) pygame.time.Clock()을 통해 clock라는 객체를 생성
2) 이후 게임속도 조절을 위한 dt 변수 생성과 동시에 clock.tick 함수를 사용해 60FPS로 지정
주의) 프레임수는 캐릭터의 속도와 상관관계가 깊으므로 무조건적으로 높거나 낮다고 좋은 것이 아니며
본 게시글에 제작중인 게임은 30프레임과 60프레임이 가장 버벅이지 않고 자연스럽게 움직임
그 외 조작 후 캐릭터의 최종위치 = to_x * dt 와 같은방식으로 속도조절도 가능함.
6.적 충돌
: 일반적인 게임에서 라이프 -1, 또는 Gameover가 나올만한 이벤트라고 생각하면 된다. 본 게임에서는 타겟과 직접적인 충돌시 이벤트 발생

1) 주인공 조작 캐릭터 처럼 타겟 또한 동일하게 생성한다 최초 위치의(x_pos)의 경우 다르게 지정

2) 주석문을 잘읽어봐야 한다.
요약하자면 위에서 코드 상단부 캐릭터와 enemy에 대해 선언 및 정의한 부분에서는 코드 순서상 get.rect()를 통해 사이즈만 받아갔고 배치만 했을뿐 그냥 껍데기만 있는 이미지라고 보면 된다.
3)반복문 내부에 캐릭터와 적의 rect값을 받고 위치를(x(y)_pos) 실시간 체크하여 충돌처리할 수 도록 left와 top에 저장해준다
4) colliderect(enemy_rect)
-> 캐릭터 rect가 (enemy_rect)에 colliderect (닿았을경우)
running값으로 True를 받던 while문에 False값을 주어 종료한다
현재까지 진행된 프로그램:

.

'Programing > Python' 카테고리의 다른 글
| [파이썬] 업무자동화 2.이미지 기반 (0) | 2021.03.15 |
|---|---|
| [파이썬] 업무자동화 1. 마우스 이동 (1) | 2021.03.15 |
| 게임만들기 - [1] 화면 프레임, 캐릭터, 배경 (2) | 2021.02.25 |
| from 모듈 import 와 import 의 차이 (2) | 2021.02.09 |
| 난수 비밀번호 생성 (임시 비밀번호) (0) | 2021.02.09 |