2016-11-30 2 views
1

나는 수류탄을 넣고 싶다고 알고있는 게임을 만들고 있습니다. 폭발하기 전에 수류탄에서 특정 반경 내에있는 모든 게임 개체를 찾는 가장 좋은 방법은 무엇입니까? 나는 이미 한 가지 방법이 배열의 모든 적이나 상대방을 가지고 있다는 것을 보았고 배열을 통해 루프를 반복하여 어떤 지역에 얼마나 많은 사람들이 있을지를 보았습니다. 그러나 이것에 접근하는 더 좋은 방법이 있을지 궁금합니다.특정 지역에 GameObject가 있는지 확인하는 가장 좋은 방법은 무엇입니까

편집 :이 표시되면

안녕하세요, 최대 난 단지 1를 가지고 좋은 질문에 대한 금지 어떤 이유로이 질문에 투표 해주세요. (아마도 내 첫 번째 질문 이었기 때문에 내 계정이 금지 될 가능성이 매우 높았습니다.) 원래 1 일간의 금지 였지만 이미 이틀이 지나서야 분명히 그러지 않았다고 대답했습니다 ....

+1

['Physics.OverlapSphere()'(https://docs.unity3d.com/ScriptReference/Physics.OverlapSphere.html). – Serlite

+0

그들이 수류탄의 상자 콜리 더와 겹치지 않는다면 어떨까요? Serlite – Peyton

+0

그건'OverlapSphere()'가 작동하는 방식이 아니에요 - 당신의 수류탄이있는 위치와 아마도 반지름을 지정하고 구형 영역 내의 모든 충돌자를 검사합니다. – Serlite

답변

2

탐지하려는 객체에 콜리 더가 첨부 된 경우 Physics.OverlapSphere()을 사용할 수 있습니다. 구형 영역 내의 모든 충돌자를 검색 할 수있는 위치와 반경을 지정하십시오.

Collider[] hitColliders = Physics.OverlapSphere(grenadePosition, explosionRadius); 

그런 다음 루프를 반복하여 필요에 따라 손상을 적용 할 수 있습니다. 희망이 도움이! 궁금한 점이 있으면 알려주세요.

+0

이것은 내 접근 방식보다 낫습니다 ... 내 게임에서 사용해야하고 특정 기능을 검색 할 때까지는 이것에 대해 알지 못했습니다. Physics.OverlapSphere 기능을 사용하여 종료되었습니다. – infmja

2

내가 접근 한 가장 좋은 방법은 이미 말했듯이 배열에 객체를 포함하는 것입니다.
"Enemy"태그를 설정하고 "Enemy"태그가있는 모든 게임 개체를 반복합니다. 모든 관련 객체가 colliders이있는 경우, 당신은 그들을 검색 할 수 있습니다

foreach(GameObject gameObj in GameObject.FindGameObjectsWithTag("Enemy") { 
    // check if the current gameObj is in a certain range of your grenade object 
} 
관련 문제