728x90
뱀파이어 서바이벌에서 가장 가까운 적에게 발사되는 아이템이 있다.
그것과 같은 아이템을 3D로 구현하고자 한다.
GameObject FindClosestEnemy() {
GameObject[] gos;
gos = GameObject.FindGameObjectsWithTag("Enemy");
GameObject closest = null;
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos)
{
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance)
{
closest = go;
distance = curDistance;
}
}
return closest;
}
일단 플레이어 기준으로 가장 가까운 Enemy 태그를 갖는 오브젝트를 얻을 수 있는 함수이다.
이 함수로 얻은 오브젝트 방향으로 LookAt()함수 적용, transform.forward(오브젝트 기준 앞 방향 벡터)를 이용해 투사체에 힘을 주면 투사체 오브젝트가 해당 방향으로 날아갈 것이다.
다만 이 때 오브젝트에 일정한 회전 값을 주어 생성해도 LookAt()이 적용되는 순간 특정 방향을 바라보도록 회전이 다시 설정되므로, LookAt에 추가 제약을 걸던가 LookAt(바라볼 대상) 에서 바라볼 대상의 트랜스폼을 다시 조정하는 수가 있는다. 나는 자꾸 만져도 칼 끝이 적을 향하도록 발사가 안돼서 앞 뒤가 상관없는 구체 형태의 투사체를 발사하는 것으로 대체하였다...
728x90
'Unity' 카테고리의 다른 글
[Unity] 오브젝트 풀링시 총알이 자꾸 사라지는 문제 (0) | 2022.05.17 |
---|---|
[Unity] 오브젝트 풀링 + 가장 가까운 적 방향으로 공격 (0) | 2022.04.22 |
[Unity] 화염 방사 아이템 (0) | 2022.04.12 |
[Unity] 퍼블릭(public) 선언시 주의할 점 (0) | 2022.04.07 |
[Unity] 로그라이크 개발 - 아이템 강화 시스템 실패 (0) | 2022.03.31 |