몬스터가 일정 범위 안에 플레이어를 감지하는 방법을 찾고 있는데
원래는 플레이어 쪽에 레이저를 쏴서 레이저가 닿으면 플레이어를 감지 하는 방식으로 할 까 했는데
이방법은 실시간으로 계산을 하는거라 좀 비효율 적인거 같아서 트리거 콜라이더에 충돌 하면
감지하는 방식으로 할려고 했음
그런데 문제는 트리거 콜라이더충돌로 하면 플레이어의 총알에 맞아서 데미지를 받게 됨
그래서 몬스터 오브젝트 아래에 자식 오브젝트를 만들고 그 자식 오브젝트에 PlayerCheck 라는
클래스를 만들고 그걸 참조해서 플레이어가 닿으면 반응하게 만들기도 했는데 이 방식도
개인적으로 굉장히 맘에 안듬
그래서 지금 어떻게 해야할지 고민 되는데 더 좋은 방법이 있을까?
트리거 콜라이더 태그로 구분하면 되는거자? 충돌한 오브젝트 태그가 플레이어인지 총알인지
그게 힘든게 한 오브젝트안에 공격받는 판정 콜라이더랑 플레이어 감지하는 콜라이더 둘다 넣고 싶은데 이렇게 하면 플레이어 감지하는 콜라이더가 총알과 닿으면 데미지를 입게됨. 한 오브젝트안에 판정 두개를 넣을려는건 좀 욕심인가
그렇게 하고 싶으면 맞는 판정은 콜루전 엔터로 처리하고 감지 콜리이더는 트리거 체크해서 트리거 엔터로 처리해야 함
아 그렇네 왜 이생각을 못하고 있었지.. 심지어 Bullet 클래스에 collision.isTrigger == false 일경우 데미지 주라고 이미 옛날에 해놧었음...
플레이어와의 거리가 감지 거리 이하일때만 레이캐스트 쏴주자
자식오브젝트로 거리 감지하는 콜라이더를 넣고 자식오브젝트 스타트 함수에서 부모 오브젝트를 null값으로하고 부모 오브젝트 따라다니게 하면 안됨?
플레이어 판정을 자식 오브젝트로 따로 만들어서 하기보다는 오브젝트 하나에서 전부 관리하고 싶었엇음
그냥 플레이어 위치랑 몬스터 위치 뺀 벡터 크기 가지고 계산하면 안됨?
그것도 생각 했었는데 실시간으로 계산하는 방식은 개인적으로 비효율 적인거 같아서 좀더 효율적인 방식을 원했었음
콜라이더 계산도 어차피 매 프레임 하는건뎅...
아 그렇구나 그러면 뭘 하든 상관없겠네
몬스터~일정범위 사이에 플레이어를 감지하자
Physics/Physics2D에 Overlap 계열 함수 사용하셈
윗분 말씀대로 overlap 에서 radius 설정하는 함수 있어요 거기에 레이어 감지가 있어서, 구역안에 뭐가 들어오면 감지, 이런식으로 되는 거라 편하시지 않을까요. 그거는 자식 오브젝트 안쓰고 몬스터 주위반경 감지하는 거라 나쁘지 않은 거 같습니당 :)
ㄳㄳ
콜라이더를 두개 만들면되겠네