이번에는 저번 글에서 재배치 준비를 한 것에 이어서, 재배치 스크립트를 만들어 보도록 하겠습니다.
먼저 c# 스크립트를 스크립트 폴더에 만들어 주고, 이름은 reposition이라고 지었습니다.
한번 더 c# 스크립트를 만들고, 이름은 game manager라고 지었습니다.

GameManager라고 파일 이름을 지어줄 경우, 유니티에서 이런식으로 자동으로 아이콘을 바꿔주게 됩니다.
추가적인 기능은 없고, 아이콘만 바뀝니다.

계층창에 빈 object를 만들어 이름을 GameManager라고 짓고, 스크립트에서 GameManager를 드래그 하여 컴포넌트로 추가해줍니다.
그런 뒤 GameManager에 들어가 아래처럼 코드를 짜줍니다
이렇게 만든 뒤 저장하면, player변수는 public이므로 변수가 inspector창에서 확인하실 수 있을겁니다.
처음에는 none으로 아무것도 없을건데, 유니티에서 드래그하여 player오브젝트를 그 부분에 넣어주시면 됩니다.
저같은 경우는 player 오브젝트의 이름을 stand0으로 해놨었습니다.

그 뒤 gamemanager 스크립트를 켜 다음과 같이 코드를 짜주었습니다.
instance의 경우에는 static을 이용하였는데, 이런식으로 코드를 짜 줄 경우 다른 파일에서도 바로 자동완성을 사용할 수 있습니다.

이제 RePosition 스크립트를 작업해보겠습니다.
먼저 전에 설정해놓았던 Area 태그에 닿지 않았다면, return을 시켜 아래줄에 나오는 코드를 실행되지 않도록 만듭니다
그 뒤, playerpos는 아까 만든 gamemanager의 instance에서 받아온 플레이어의 위치값으로 해주고, my pos는 현재 이 스크립트가 들어있는 오브젝트가 위치한 위치값으로 잡아줍니다
그 뒤, 그 둘의 거리값의 차이를 구하고 x좌표의 차이는 diffx , y 좌표의 차이는 diffy로 놓습니다.
그 뒤 playerdir은 우리가 주는 방향키의 방향으로 하고, dirx는 0보다 playerdir.x의 값이 작다면 -1, 그렇지 않다면 1로 해줍니다.
diry의 경우도 마찬가지로 해주면 됩니다.
아직 만들어 지지는 않았지만, 그 뒤에 적이 나오기 위한 재배치 또한 구현해놓도록 하겠습니다.
switch문을 이용하여 구현하였습니다.
먼저 ground태그에 닿을 경우에, x값으로의 차이가 더 크면 오른쪽으로 1의 벡터값에 위에서 구한 방향값을 곱하고, 그 값에 다 20크기의 판 2개만큼 움직여 줘야 하기에 40을 곱해줬습니다.
반대의 경우에도 방향만 위쪽의 크기 1 벡터로 바꾸어 주었습니다.
아래쪽의 Enemy 케이스의 경우에는 추후 완성시킬 예정입니다.
다음 글에서는 재배치 하는 것을 마무리 해보도록 하겠습니다
'유니티 > 뱀서라이크' 카테고리의 다른 글
| 뱀서라이크 따라하기 - 적 구현하기 (0) | 2023.07.27 |
|---|---|
| 뱀서라이크 따라하기 - 4강 재배치 로직 마무리 (0) | 2023.07.26 |
| 뱀서라이크 - 4강 무한맵 구현하기 첫번째 (0) | 2023.07.24 |
| 뱀서라이크 따라하기 - 3강 셀 애니메이션 제작 3번째 (1) | 2023.07.23 |
| 뱀서라이크 따라하기- 3강 셀 애니메이션 제작 2번째 (0) | 2023.07.22 |