[Unity]07.포톤2를 활용한 탱크 게임 만들기 #3 - 포톤 연동하기

안녕하세요 유랑입니다.



오늘은 기다리시던 네트워크 부분을 많이 진행하겠습니다.

카메라, 컨트롤러 설정하는 부분을 진행해 볼게요.




1. 포톤 연동하기



1-1) 포톤 스크립트 코드 추가하기



캐논, 터렛, 탱크에 있는스크립트에 내께 아니면 return을 실행하는 코드를 추가하겠습니다.

포톤2는 MonoBehaviourPunCallbacks을 상속받아서 코드를 자동완성하기가 쉬워졌습니다.










이제 내것만 설정가능합니다.

포탄은 아직 아니에요ㅎ






1-2) 카메라 정보 받아오기



SmoothFollow 스크립트로 가시면 target이 public이 아니고 private였어요.

SerializeField속성 때문에 보여지는거였네요.

public으로 바꿔 주세요.






탱크 이동 컨트롤러 스크립트로 가시고 카메라 코드를 넣어줄게요.

IsMine을 통해서 내 탱크면 탱크 자식으로 있는 CamPivot을 따라가도록 설정해 줄게요.





카메라가 잘 따라오는걸 확인할 수 있어요.






1-3) 폭발효과 추가하기



탱크게임이 너무 심심해 보이죠?

파티클을 통해서 포탄이 화려하게 터지도록 만들어 볼게요.

에셋스토어에서 유니티가 제공하는 파티클을 임포트 해주세요.






SmallExplosionEffect는 Looping이 체크되어 있기에 계속 폭발이 일어납니다.

자식도 포함해서 언체크 해주겠습니다.

그리고 해당 프리팹을 Resources 폴더로 옮겨 주세요.





폭발 파티클을 포탄이 부딪칠 때 생성할게요.

Cannon 스크립트로 가셔서 다음 내용을 추가해 주세요.






스크립트에 파티클 오브젝트를 넣어주고 실행시켜주면 폭발하는 효과를 볼 수 있어요.

이제 게임다워졌네요^6^








1-4) RPC



발사하는 부분은 실시간으로 처리해 줄 필요가 없어요.

그렇기에 RPC라는걸 이용해 볼게요.

RPC는 내 정보를 보여주거나 서버를 통해서 옮길 수도 있어요.

이 부분에 대해서는 나중에 자세히 배워보겠습니다.








이제 마우스 왼쪽 버튼을 누르면 다른 탱크가 아닌 내 탱크만 동작하는걸 확인할 수 있습니다.






1-5) SpawnPoint



탱크가 생성되는 위치가 똑같기 때문에 동시에 접속하면 탱크가 이리저리 왔다갔다 합니다.

생성 포인트를 여러개 지정해서 이걸 방지해 볼게요.

빈 오브젝트를 생성한 후 중심을 기준으로 바깥쪽에 여러 개의 포인트를 만들어 주세요.








PhotonInit 스크립트에 해당 포인트들을 이용해서 랜덤으로 탱크를 생성하게 만들어 주겠습니다.








1-6) 사운드 적용하기



폭발음을 구해서 적용해 보겠습니다.

저는 무료로 제공해 주는 사이트에 가서 받았습니다.

https://freesound.org/






받은 사운드 파일을 프로젝트 뷰에 넣어 주세요





FireCannon 스크립트에 오디오 소스파일을 추가하여 포탄이 발사되면

소리가 나오도록 추가해 주었습니다.





마지막으로 사운드를 스크립트에 넣어주고 실행하면 효과음이 나오는걸 확인할 수 있어요.








1-7) 닉네임 확인하기



서로 누가 들어왔는지 확인하기 위해서 UI창을 만들어 보겠습니다.

이 부분은 TextMeshPro를 이용해서 만들어 볼게요.

윈도우에 해당 기능이 없을 경우 Package Manager에서 추가시켜 주세요.

저는 Import TMP Essential Resources 와 Import TMP Examples and Extras를 추가시켜 주었어요.






Font Asset Creater를 통해서 전용 폰트를 만들어 주겠습니다.







탱크 프리팹을 하이라키 뷰에 만들고 캔버스를 생성하여 컴포넌트 값을 다음과 같이 변경해 주세요.





캔버스 밑으로 패널을 추가하고 원하는 색깔로 바꿔 주세요^^





TextMeshPro를 이용해 아까 만든 텍스트를 적용해 보겠습니다.

크기와 위치는 본인 취향에 맡게 지정해 주세요.





저는 탱크 옆에 이렇게 나오도록 만들었어요.





MoveCtrl 스크립트에 만든 텍스트를 적용하기 위해서 코드를 추가해 줄게요.





컴포넌트 속성에 TextMeshPro 오브젝트를 넣어주었습니다.





패널은 꼭 Rotation 값을 180도로 회전시켜 주세요.

반대로 보입니다.





내가 어느 위치던간에 패널이 정면으로 보이도록 만들어 줄게요.

Billboard 스크립트는 카메라를 계속 바라보는 코드이며, 캔버스 안에 넣어 주세요.







이렇게 되셨으면 성공입니다.

잘 하셨어요!!!




2. 마무리



오늘은 스크립트를 추가해 주며 네트워크 환경을 원할하게 만들어준 것 같아요.

물론 파티클과 사운드, 그리고 닉네임 UI도 적용해 주었습니다.

이렇게 응용하면 앞으로 포톤 공부도 무난할것 같네요.

오늘도 고생하셨습니다.

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Unity---Extra-Photon-



댓글

Designed by JB FACTORY