Пример #1
0
    public List <Enemy> GetEnemies(SwarmMember member, float radius)
    {
        List <Enemy> returnEnemies = new List <Enemy>();

        //foreach (var enemy in enemies)
        //{
        //    if (Vector3.Distance(member.GetPosition(), enemy.rigidBody.position) <= radius)
        //    {
        //        returnEnemies.Add(enemy);
        //    }
        //}
        //return returnEnemies;
        return(returnEnemies);
    }
Пример #2
0
    public List <SwarmMember> GetNeighbours(SwarmMember member, float radius)
    {
        List <SwarmMember> neighboursFound = new List <SwarmMember>();

        foreach (SwarmMember otherMember in swarmMembers)
        {
            if (otherMember == member)
            {
                continue;
            }
            if (Vector3.Distance(member.GetPosition(), otherMember.GetPosition()) <= radius)
            {
                neighboursFound.Add(otherMember);
            }
        }
        return(neighboursFound);
    }
Пример #3
0
    public static SwarmController CreateNew(Transform spawnPosition, Transform swarmControllerPrefab, Transform swarmMemberPrefab, List <Character> characters, SwarmMemberConfig config)
    {
        var swarmPrefab       = Instantiate(swarmControllerPrefab, swarmControllerPrefab.position, Quaternion.identity);
        var swarmController   = swarmPrefab.GetComponent <SwarmController>();
        var destinationSetter = swarmController.GetComponent <AIDestinationSetter>();

        swarmController.Init(spawnPosition, characters, config);
        var closestCharacter = swarmController.FindClosestSquadMember();

        destinationSetter.target      = closestCharacter.transform;
        swarmController.currentTarget = closestCharacter.transform;
        swarmController.spawnPosition = spawnPosition;
        swarmController.memberPrefab  = swarmMemberPrefab;
        for (int i = 0; i < config.swarmMaxLimit; i++)
        {
            var swarmMember = SwarmMember.CreateNew(swarmMemberPrefab, swarmController, config, swarmController.currentTarget);
            swarmController.swarmMembers.Add(swarmMember);
        }
        return(swarmController);
    }
Пример #4
0
 private void FixedUpdate()
 {
     if (currentTarget == null)
     {
         currentTarget = FindClosestSquadMember().transform;
         foreach (var member in swarmMembers)
         {
             member.SetTarget(currentTarget);
         }
     }
     //Reset and respawn
     if (swarmMembers.Count < config.swarmRespawnSize)
     {
         transform.position = spawnPosition.position;
         for (int i = swarmMembers.Count; i < config.swarmMaxLimit; i++)
         {
             var swarmMember = SwarmMember.CreateNew(memberPrefab, this, config, this.currentTarget);
             swarmMembers.Add(swarmMember);
         }
     }
 }
Пример #5
0
 public void MemberDied(SwarmMember member)
 {
     swarmMembers.Remove(member);
 }