コード例 #1
0
    void NewTarget()
    {
        float             minDist    = float.MaxValue;
        SpawnableMutation tempObject = null;
        float             tempDist;

        foreach (SpawnableMutation guy in mutations)
        {
            tempDist = CalcDistance2D(guy.transform, transform);
            if (tempDist < minDist)               //&& Vector3.Distance(guy.transform.position, patrolPoint) < patrolDistance)
            {
                minDist    = tempDist;
                tempObject = guy;
            }
        }

        target = tempObject;

        if (target)
        {
            //approach the new target
            StartCoroutine(TurnToLook(target.gameObject));
        }
        else
        {
            //start patrolling
            StartCoroutine(TurnToLook(waypoints[waypointIndex].gameObject));
        }
    }
コード例 #2
0
ファイル: GardenEye.cs プロジェクト: brysonpdavis/laserdays
    void NewTarget()
    {
        float             minDist    = float.MaxValue;
        SpawnableMutation tempObject = null;
        float             tempDist;

        foreach (SpawnableMutation guy in mutations)
        {
            tempDist = CalcDistance2D(guy.transform, transform);
            if (tempDist < minDist && MutationCanBeSeen(guy.gameObject)) //&& Vector3.Distance(guy.transform.position, patrolPoint) < patrolDistance)
            {
                minDist    = tempDist;
                tempObject = guy;
            }
        }

        target = tempObject;

        if (target)
        {
            //approach the new target
            StartCoroutine(PlantRoutine(target.gameObject));
        }
        else
        {
            //look to the player again
            if (state != BotState.Following || state != BotState.Destroying)
            {
                state = BotState.Turning;
                StartCoroutine(SnapView(player.position + playerAdditionValue, turnTime, true));
            }
        }
    }
コード例 #3
0
    public static void RemoveMutationFromDrones(SpawnableMutation mut)
    {
        foreach (GardenDrones drone in allDrones)
        {
            drone.mutations.Remove(mut);

            if (drone.target == mut && drone.state == DroneState.Approaching)
            {
                drone.NewTarget();
            }
        }
    }
コード例 #4
0
ファイル: GardenEye.cs プロジェクト: brysonpdavis/laserdays
    public static void RemoveMutationFromBots(SpawnableMutation mut)
    {
        foreach (GardenEye bot in allBots)
        {
            bot.mutations.Remove(mut);

            if (bot.target == mut && bot.state == BotState.Following)
            {
                bot.NewTarget();
            }
        }
    }
コード例 #5
0
ファイル: GardenEye.cs プロジェクト: brysonpdavis/laserdays
    private IEnumerator PlantRoutine(GameObject nextPlant)
    {
        //yield return new WaitForSeconds(nextPlant.GetComponent<SpawnableMutation>().growthLength);
        SpawnableMutation mutation = nextPlant.GetComponent <SpawnableMutation>();

        //if (mutation.lifePhase == SpawnableMutation.LifeCycle.Growth)
        //yield return new WaitForSeconds(mutation.growthLength);


        StartCoroutine(SnapView(nextPlant.transform.position, turnTime, false));
        state = BotState.Turning;
        yield return(new WaitForSeconds(turnTime));

        state = BotState.Destroying;
        mutation.lifePhase  = SpawnableMutation.LifeCycle.Death;
        plantRoutineRunning = false;
        yield return(null);
    }
コード例 #6
0
    public static void AddMutationToDrones(SpawnableMutation mut)
    {
        if (allDrones == null)
        {
            allDrones = new List <GardenDrones>();
        }

        foreach (GardenDrones drone in allDrones)
        {
            // for each drone, if the mutation is in its patrol area, add that mutation to its list of mutations
            if (CalcDistance2D(drone.patrolPoint, mut.transform) < drone.patrolDistance)
            {
                drone.mutations.Add(mut);
                if (drone.state == DroneState.Patrolling)
                {
                    drone.NewTarget();
                }
            }
        }
    }
コード例 #7
0
ファイル: GardenEye.cs プロジェクト: brysonpdavis/laserdays
    public static void AddMutationToBots(SpawnableMutation mut)
    {
        if (allBots == null)
        {
            allBots = new List <GardenEye>();
        }

        foreach (GardenEye bot in allBots)
        {
            // for each drone, if the mutation is in its patrol area, add that mutation to its list of mutations
            if (CalcDistance2D(bot.patrolPoint, mut.transform) < bot.patrolDistance)
            {
                bot.mutations.Add(mut);
                if (bot.state == BotState.Following)
                {
                    bot.NewTarget();
                }
            }
        }
    }
コード例 #8
0
    IEnumerator TurnToLook(GameObject targetObject)
    {
        state = DroneState.Waiting;

        float      ratio    = 0;
        float      duration = waitDuration;
        float      elapsed  = 0;
        Quaternion begin    = transform.rotation;

        transform.LookAt(targetObject.transform);
        transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, transform.eulerAngles.z);

        Quaternion end = transform.rotation;

        transform.rotation = begin;

        while (ratio < 1)
        {
            yield return(null);

            elapsed += Time.deltaTime;
            ratio    = elapsed / duration;

            transform.rotation = Quaternion.Slerp(begin, end, TweeningFunctions.EaseOut(ratio));
        }

        if (targetObject.GetComponent <SpawnableMutation>())
        {
            state = DroneState.Approaching;

            target = targetObject.GetComponent <SpawnableMutation>();
        }
        else
        {
            state = DroneState.Patrolling;
        }
    }
コード例 #9
0
 private void Start()
 {
     dif       = growthMinMax[1] - growthMinMax[0];
     spawnable = GetComponent <SpawnableMutation>();
 }