Exemple #1
0
 public FlockState(FSM <MinionController.States> fsm, MinionController minionController, FlockingEntity flockingEntity)
 {
     _fsm = fsm;
     _minionController = minionController;
     _flockingEntity   = flockingEntity;
     _avoid            = new Avoid(_minionController.transform, _minionController.lineOfSight.obstaclesLayer, _minionController.obstacleRadius, _minionController.obstacleWeight);
 } // Constructor del Estado Flock.
Exemple #2
0
    public override Vector3 GetDirection(List <Transform> context)
    {
        Vector3 direction = Vector3.zero;

        if (context.Count > 0)
        {
            // Get direction to nearby allies.
            foreach (Transform item in context)
            {
                FlockingEntity flockEnt      = item.GetComponent <FlockingEntity>();
                Vector3        itemDirection = flockEnt.Direction; // FAIL
                direction += itemDirection;                        // FAIL
            }

            // Get an average position of the context.
            direction /= context.Count;
        }

        else
        {
            direction = this.GetComponent <FlockingEntity>().Direction;
        }

        return(direction);
    }
 public Avoid(Transform myTransform, LayerMask obstacleLayer, float obstacleRadius, float obstacleWeight)
 {
     _myTransform    = myTransform;
     _obstacleLayer  = obstacleLayer;
     _obstacleRadius = obstacleRadius;
     _obstacleWeight = obstacleWeight;
     flockingEntity  = myTransform.gameObject.GetComponent <FlockingEntity>();
 }
    public override Vector3 GetDirection(List <Transform> context)
    {
        Vector3        direction    = Vector3.zero;
        Vector3        centerOfMass = Vector3.zero;
        FlockingEntity entity       = this.GetComponent <FlockingEntity>();

        if (context.Count > 0)
        {
            foreach (Transform item in context)
            {
                centerOfMass += item.position;
            }

            centerOfMass /= context.Count;

            direction = centerOfMass - this.transform.position;
        }

        return(direction);
    }