Exemplo n.º 1
0
    //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);
        }
    }
Exemplo n.º 2
0
    public SwarmLeaderDefendState(FlockLeaderController leaderController, Flock flock)
    {
        controller = leaderController;
        swarm      = flock;

        swarm.swarmFollowRadius = controller.DefenseRadius; //Set swarm freedom radius to defense radius

        stateID = FSMStateID.Defend;
    }
Exemplo n.º 3
0
    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;
    }