Python) 골드 마이너 게임 만들어보기 (2) (pygame frame 이용)

2022. 7. 11. 20:34코딩/- Project: pygame

728x90
반응형

 

 

집게의 움직임에 대해서 이해하는 데 정말 어려웠던 것 같아.

먼저 자연스러워 보이기 위해서 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(집게가뻗어나가는속도)에 -값을 할당해서 다시 돌아오게 만들었어.

그리고 집게가 원상태로 돌아오면 다시 집게는 뻗어나가지 않고, 흔들리게 만들어줬어.

 

 

 

 

728x90
반응형