2022. 7. 11. 20:34ㆍ코딩/- Project: pygame
집게의 움직임에 대해서 이해하는 데 정말 어려웠던 것 같아.
먼저 자연스러워 보이기 위해서 math.Vector2 를 이용해 거리를 두었어.
캐드의 offset 기능과 똑같아.
집게를 좌우로 회전시키기 위해서는 먼저 기준점이 필요해.
따라서 rect_center = self.position + self.offset 을 통해 기준점을 잡아줬어.
update 함수 내에 self.rect 를 포함시키고,
그리고 self.rect = self.image.get_rect(center=rect_center)를 이용해 네모를 계속 업데이트해주는거지.
집게를 돌려주기 위해서 집게가 흔들리는 각도값을 임의로 10~170도 사이로 정해줬어.
direction 함수 내에 LEFT=-1, RIGHT=1 을 정의해줌으로써 임의로 방향을 정해줬어.
각도 변경폭을 angle_speed 란 변수로 2.5를 할당하고, 그리고 초기각도값을 angle이란 변수로 10을 받아줬어.
r그리고 self.angle값이 10도와 170도 사이만 다닐 수 있도록,
direction 함수로 RIGHT(오른쪽방향) LEFT(왼쪽방향)으로 표시해줌으로써 허용 각도 범위 내에서만 움직이도록 했어.
그리고 rotate란 함수를 만들어, transform.rotozoom 을 통해 객체를 계속 따라다니며 회전하게 만들었어.
중심점이 부자연스럽게 계속 흔들리는 걸 볼 수 있지?
이 현상을 offset 값을 준 x, y 값을 꾸준히 업데이트하여 rect.get_size를 지정해줘야해.
자연스럽게 돌아가는 걸 확인할 수 있네.
그리고 pygame.draw.line 을 통해 캐드에서 선을 그리는 것처럼 그려줄 수 있는데,
pygame.draw.line(그릴곳, 색깔, 선시작위치, 선도착위치, 두께)를 통해 선을 그려줄 수 있어.
이제 마우스를 누를 때 발사되는 집게를 만들어볼텐데,
pygame.MOUSEBUTTONDOWN 함수를 이용해 마우스를 누를 때를 조건으로 하여,
direction함수값을 STOP=0 (각도변경값=0)으로 만들어주고,
뻗어나가는 속도를 to_x란 변수로 지정하고, move_speed를 넣어줘.
그랬더니 화면을 뚫고 가는 집게의 모습ㅋㅋ...
돌아오는 속도를 return_speed로 지정하고,
claw의 범위가 화면 바깥으로 나갈 때, to_x(집게가뻗어나가는속도)에 -값을 할당해서 다시 돌아오게 만들었어.
그리고 집게가 원상태로 돌아오면 다시 집게는 뻗어나가지 않고, 흔들리게 만들어줬어.
'코딩 > - Project: pygame' 카테고리의 다른 글
Python) 골드 마이너 게임 만들어보기 (1) (pygame frame 이용) (0) | 2022.07.06 |
---|---|
Python) 침팬지 게임 만들어보기 (pygame frame 이용) (0) | 2022.07.05 |
Python) 팡게임(Pang Game) 만들어보기 (pygame frame 이용) (0) | 2022.07.04 |
Python) 똥 피하기 게임 만들기 (pygame frame 이용) (0) | 2022.07.03 |
Python) 파이 게임 틀 만들기 2 (FPS, 타이머, 프레임, 텍스트) (0) | 2022.07.03 |