//Moves void Move() { if (controller.GetType() == typeof(FlockLeaderController)) { FlockLeaderController flockLeader = (FlockLeaderController)controller; //Calculate direction Vector3 direction = controller.SpawnDestination - controller.transform.position; direction.Normalize(); Vector3 newDir = Vector3.RotateTowards(controller.transform.forward, direction, 20 * Time.deltaTime, 0); Quaternion rot = Quaternion.LookRotation(newDir); controller.transform.rotation = Quaternion.Lerp(controller.transform.rotation, rot, 20 * Time.deltaTime); //Move towards position. No need to worry about obstacles or controller.transform.position += controller.transform.forward * flockLeader.Stats.shipSpeed * Time.deltaTime; } else { //Calculate direction Vector3 direction = controller.SpawnDestination - controller.transform.position; direction.Normalize(); Vector3 newDir = Vector3.RotateTowards(controller.transform.forward, direction, 20 * Time.deltaTime, 0); Quaternion rot = Quaternion.LookRotation(newDir); controller.transform.rotation = Quaternion.Lerp(controller.transform.rotation, rot, 20 * Time.deltaTime); //Movement controller.GetComponent <Rigidbody>().AddForce(controller.transform.forward.normalized * 50, ForceMode.Acceleration); } }
public SwarmLeaderDefendState(FlockLeaderController leaderController, Flock flock) { controller = leaderController; swarm = flock; swarm.swarmFollowRadius = controller.DefenseRadius; //Set swarm freedom radius to defense radius stateID = FSMStateID.Defend; }
public SwarmLeaderPatrolState(FlockLeaderController leader, Flock swarmObj, bool randomize = true) { controller = leader; randomPoint = randomize; swarm = swarmObj; swarm.swarmFollowRadius = controller.PatrolRadius; if (randomPoint) { patrolID = Random.Range(0, controller.waypoints.Length); } stateID = FSMStateID.Patrolling; }