내 유닛이 적 유닛한테 공격을 하도록 만드는데
우선 내 유닛이 투사체역할을 할 객체를 하나 만들고
그 투사체는 적의 좌표값을 얻은다음
투사체->적 방향의 벡터를 얻고 그 벡터방향으로 이동해서
투사체 콜라이더와 적콜라이더가 겹칠 때, ( 두 객체 거리가 일정이하 라는 조건일경우도 좋겠지만 어쨋거나)
공격이 실행되고 적 체력이 깎이도록 했음
그런데 이제 문제가 뭐냐면
적이 공격을 받고 죽어서 메모리에서 해제되었단 말이야?
예를들자면 내유닛이 10개가있는데 첫번째유닛의 투사체를 맞고 적이 죽었는데
10개유닛들이 동시에 공격하니까 나머지 애들이 발사한 9개의 투사체가
아직 객체로서 존재하고있는 상태인거임
9개의 투사체들이 적 유닛의 글로벌좌표에 도달하기도 전에 허공에 떠있을때
적이 죽어서 메모리에서 사라지게해놓으니까 이 적의 글로벌좌표를 가져올 방법이 사라짐
이경우 좌표를 잃은 투사체들은 그냥 그자리에서 폭발하도록 애니메이션을 넣으니까 상당히 어색해보임
그래서 적 유닛이 죽어도 이미지만 안보일뿐 1초쯤 시간을 주고 메모리에서 해제했는데
그랬더니 딱히 티도 안나고 역시 적에게가던도중에 폭발해서 어색함
스타크래프트같은데서 유닛이 죽어도 미리 쏴놓은 투사체들은 그 좌표까지가던데
어떻게해야좋을까...
우선 내 유닛이 투사체역할을 할 객체를 하나 만들고
그 투사체는 적의 좌표값을 얻은다음
투사체->적 방향의 벡터를 얻고 그 벡터방향으로 이동해서
투사체 콜라이더와 적콜라이더가 겹칠 때, ( 두 객체 거리가 일정이하 라는 조건일경우도 좋겠지만 어쨋거나)
공격이 실행되고 적 체력이 깎이도록 했음
그런데 이제 문제가 뭐냐면
적이 공격을 받고 죽어서 메모리에서 해제되었단 말이야?
예를들자면 내유닛이 10개가있는데 첫번째유닛의 투사체를 맞고 적이 죽었는데
10개유닛들이 동시에 공격하니까 나머지 애들이 발사한 9개의 투사체가
아직 객체로서 존재하고있는 상태인거임
9개의 투사체들이 적 유닛의 글로벌좌표에 도달하기도 전에 허공에 떠있을때
적이 죽어서 메모리에서 사라지게해놓으니까 이 적의 글로벌좌표를 가져올 방법이 사라짐
이경우 좌표를 잃은 투사체들은 그냥 그자리에서 폭발하도록 애니메이션을 넣으니까 상당히 어색해보임
그래서 적 유닛이 죽어도 이미지만 안보일뿐 1초쯤 시간을 주고 메모리에서 해제했는데
그랬더니 딱히 티도 안나고 역시 적에게가던도중에 폭발해서 어색함
스타크래프트같은데서 유닛이 죽어도 미리 쏴놓은 투사체들은 그 좌표까지가던데
어떻게해야좋을까...
타게팅된 액터의의 로케이션을 캐시해두고 거기로 보내면되는거지
타게팅된 유닛의 위치를 투사체가 날아가야할 목표위치로 설정하면됨 그 오브젝트가 메모리에서 사라지던말던 투사체가 그 목표위치로 설정된 방향으로 날아가도록
그리고 매프래임 할 필요도없고 걍 투사체 발사 시점에 캐싱하면됨
0.3초간격으로 어떤변수에 담도록하긴해봤는데 너무 동떨어진데로 자꾸가서 그랬었는데 간격더짧게해서 말한대로해봐야겠다...
유닛속도는 빠른데 투사체속도는 또 느려서 몇프레임마다하긴해줘야할듯
그런류의 유도 미사일이면 너가말한대로 0.3초에 한번씩 타겟 액터 위치 가져오다가 타겟액터가 널이면 마지막 업데이트된 위치로 가도록 하는게 나을듯
투사체가 매번 적의 마지막 위치를 저장해두었다가, 적이 없으면 그 마지막 위치로 도착했을떄쯤 사라지는건 어떨까
위에분도그렇고 이거밖에방법이없는듯
투사체가 참조하는 대상 오브젝트가 파괴되는 이벤트에 바인딩해서 파괴되면 마지막 위치로 이동하게끔 하죠 그냥 매 프레임마다 마지막 위치 캐싱하다가 오브젝트 없으면 캐싱된 위치로 가게해도 되긴 하는데 프레임이 떨어지면 투사체가 의도치않은 곳으로 날아갈 수도 있음
1. 대상이 사라지면 제자리에서 몇 초간 체공하다 다른 적이 생기면 추적, 아니면 사라짐 2. 대상이 사라지면 가장 최신에 갱신된 방향으로 전진(다른 적에게 맞거나 화면 밖으로 감 ㅇㅇ) 3. 윗댓처럼 적 위치 기억해서 도달 후 사라지기
모두들 고마워!