본문 바로가기
유니티5 독학 & 게임 제작

유니티5 독학하기 그 95번째 걸음-총알 발사의 구현part5

by 인터넷떠돌이 2018. 10. 27.
반응형

안녕하세요?


지난번 포스팅에서 레이져가 발사되기는 되었는데, 이상하게 플레이어 캐릭터가 처음 시작한 위치에서만 발사가 되고, 그게 플레이어 캐릭터를 따라서 움직이지 않는 현상이 일어났습니다. 그래서 이번 포스팅에서 그 문제를 해결하기 위한 좌우충돌을 이야기 할까 합니다.



우선 스크립트에서 무언가 에러가 난 것이 아닌가 하는 생각이 들어서, 일단 자료를 찾아보니, Transform과 transform이 차이가 있다는 이야기를 찾을 수 있었습니다.



그리고 또 찾아본 결과, 위 스크린샷의 내용처럼 this.transfrom.position을 이용해서 한번 도전을 해 볼까 합니다.



그런데 일단 비주얼 스튜디오 상에서 아예 에러가 생기는 것을 확인할 수 있었습니다. 그래서 이렇게 시도한 것은 그다지 좋은 시도는 아니라는 것을 알 수 있었습니다.



그래서 일단 Body만 프리펩화 되어 있기에, 아예 Player 게임 오브젝트 자체를 프로젝트뷰로 끌어와서 프리펩화 시키도록 해 봅니다.




그리고 위 스크린샷에서 붉은색 동그라미를 친 곳과 같이 Apply 버튼을 눌러 보았습니다.



아무리 해도 상황이 나아지지 않자, 이제는 BulletLoaction게임 오브젝트를 -90도 기울인 것이 문제인가 싶어서 일단 -90도 기울기를 했는 것을 해제했습니다.



그리고 다시 총알 프리펩으로 가서 1st_Bullet을 선택하도록 합니다.



1st_Bullet에서 위 스크린샷과 같이 -90도로 기울어 지도록 만들어 줍니다.




그러자 이번에는 총알이 위로 올라가는 것을 볼 수 있었습니다.



그래서 BulletMove.cs로 가서, 위 스크린샷과 같이 up이라고 되어 있는 부분을 right로 다시 바꾸어 주도록 합니다.



이제 방향은 잡았는데, 문제는 Destroy()함수를 호출이 되지 않습니다. 아무래도 코드상 에러가 있어서 그냥 if문으로 비교하는 것은 무리일 듯 해서, 하는 수 없이 코루틴을 사용해서 0.2초가 있으면 자동으로 총알이 사라지도록 만들어 주었습니다.



이제서야 총알이 제가 원하는 데로 나가는 것을 볼 수 있었습니다. 다만 여기까지 오는데 수 많은 시행착오가 있었는데, 이전에 했던 패럴렉스 스크롤에 비해서는 시간이 덜 걸렸다는 것을 알 수 있습니다. 다만 이런다고 해서 문제가 없는 것이 아니라 너무 자주 Destroy()함수를 호출하기 때문에 이는 예상치 못한 렉을 유발할 수 있다고 합니다. 그래서 이 방법을 해결한 방법으로 다음 포스팅 부터 시도를 할 것을 약속 드리며, 이만 포스팅을 마치도록 하겠습니다. 

반응형