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.
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); }