2011-03-20 3 views
0

나는 Enemy라는 태그가있는 모든 개체로 채워진 배열을 가지고 있습니다. 한 적군이 다른 적들에게 가까이 다가 가면 적으로부터 멀어 지거나 그 주위로 가야합니다.목표에서 멀리 떨어져 있으십시오

이 내가 지금 무엇을 가지고 :

foreach(Transform enemy in enemies){ 
    if(enemy == this.transform) continue; 

    enemyPos = enemy; 
    float enemyDistance = Vector3.Distance(enemy.transform.position, transform.position); 

    if(enemyDistance < 8){ 
     transform.RotateAround (enemyPos.position, Vector3.up, 360 * Time.deltaTime); 
    } 
} 

원수가 서로 충분히 가까이 오면, 그들은 서로의 주위에 동그라미 것입니다. 또한 적 개체가 큐브 중 하나에 닿았을 때 2 큐브 트리거를 사용하려고 시도하면 큐브 된 적의 회전이 멀리 떨어집니다. 또한 다른 각도로 시도했습니다. 그러나 행운 :(

난 아직 해결책을 찾기 위해 노력하고 있어요.하지만 당신은 이것에 대해 더 나은 아이디어가 있다면, 당신의 도움이 많이 appreceated됩니다 :)

사전에 감사!

+0

합니까 참가자들은 달성하기 위해 노력한다 몇 가지 목표를 가지고? – Dialecticus

+0

음 ... 그 사람이 무슨 뜻인지 알기 위해 영웅을 쫓아 다니고 있습니다. – Amacoder

답변

1

다음 article이 도움이 될 수 있습니다.

간단히 말해서, 상담원이 주어진 거리에있을 때 상대방을 "격퇴"합니다. 이것은 무리에서 "분리"개념입니다. 정말 흥미로운 점은 거리에 의존하는 로테이션을 가질 수 있다는 것입니다 (즉, 다른 에이전트가 매우 열심히해야 함을 의미합니다). 둘 이상의 에이전트와 상호 작용할 수 있습니다.

같은 사이트에서 this은 (는) 플레이어를 검색하는 데 도움을줍니다. 두 가지 방법을 합치면 다른 에이전트를 피하면서 플레이어를 잡으려고하는 에이전트가 있습니다.

관련 는 기욤

2

여러 개의 움직이는 물체가 있고 그 중 일부는 다른 물체의 방해가 될 수 있습니다. 저는 여러분이 앞에서 움직이는 장애물을 가지고있는 모든 물체의 이동을 연기 할 것을 제안 할 것입니다. 자유롭게 움직이는 모든 물체가 움직일 때 그 과정을 반복함으로써 다른 물체를 움직여보십시오. 왜냐하면 어떤 물체는 자유롭게 될 수 있기 때문입니다. 기본적으로 목록에 변경 사항이 없을 때까지 이동되지 않은 오브젝트 목록을 반복합니다.

자유롭게 움직이는 새로운 물체가없는 경우 원하는대로 나머지 물체를 처리하십시오. 나는 그들 중 하나에 대해서만 대체 경로를 찾은 다음 위의 절차를 반복하는 것이 좋습니다. 한 물체가 풀리면 다른 모든 물체가 풀릴 수 있습니다. 걸린 나머지 개체에 대해이 두 번째 절차를 반복 할 수 있습니다.

관련 문제