Пример #1
0
    public override void StateBehaviour()
    {
        if (lightToUse == null)
        {
            StateStart();
        }
        else
        {
            WispAI bestWisp = null;
            float  dist     = float.PositiveInfinity;
            foreach (WispAI wisp in WispSpawner.AllWisps)
            {
                float wispToLightDist = Vector3.Distance(lightToUse.transform.position, wisp.transform.position);
                if (wispToLightDist <= 15.0f && wispToLightDist >= 3.0f && wispToLightDist < dist)
                {
                    bestWisp = wisp;
                    dist     = wispToLightDist;
                }
            }

            if (bestWisp != null)
            {
                var     heading          = lightToUse.transform.position - bestWisp.transform.position;
                var     direction        = heading / heading.magnitude;
                Vector3 positionToMoveTo = lightToUse.transform.position - direction * 2;
                EnemyAI.SetTargetPosition(positionToMoveTo);
                EnemyAI.MoveAlongPath(EnemyAI.walkSpeed);
                if (dist < 5.5f)
                {
                    EnemyAI.GetComponent <Animator>().SetTrigger("Stick_Up");
                }
            }
        }
    }
Пример #2
0
    void CreateEntities()
    {
        entities = new List <WispAI>();

        for (int i = 0; i < populationSize; i++)
        {
            WispAI wispAI = Instantiate(entityPrefab, wispSpawnPosition.position, entityPrefab.transform.rotation).GetComponent <WispAI>();
            wispAI.InitGathering(neuralNetworks[i], WispTargetPosition);
            entities.Add(wispAI);
        }
    }
Пример #3
0
    private void SpawnWisp()
    {
        foreach (Grid grid in gridManager.grids)
        {
            List <Node> availableNodes = grid.GetAvailableNodes();
            if (availableNodes.Count > 0)
            {
                int    rndNumber = UnityEngine.Random.Range(0, availableNodes.Count);
                WispAI wisp      = Instantiate(WispPrefab, availableNodes[rndNumber].vPosition + new Vector3(0.0f, 3.5f, 0.0f), Quaternion.identity).GetComponent <WispAI>();
                AllWisps.Add(wisp);

                if (neuralNetworks.Count > 0)
                {
                    int rndNumber2 = UnityEngine.Random.Range(0, neuralNetworks.Count);
                    wisp.neuralNetworkRoam = neuralNetworks[rndNumber2];
                }
            }
        }
    }
Пример #4
0
 public FleeState(WispAI wisp, Transform transform, float time)
 {
     Wisp           = wisp;
     this.transform = transform;
     this.timer     = time;
 }
Пример #5
0
 public RoamState(WispAI wisp)
 {
     Wisp = wisp;
 }
Пример #6
0
 public GatheringState(WispAI wisp)
 {
     Wisp  = wisp;
     timer = 0.0f;
 }