コード例 #1
0
    //NAVIGATION
    void SetTarget(GameObject current, UnitNavigationController navigator)
    {
        GameObject[] Persons     = GameObject.FindGameObjectsWithTag(GlobalManager.npcsTag);
        float        closestDist = Mathf.Infinity;
        int          closest     = -1;

        if (Persons.Length > 0)
        {
            /*
             * for (int c = 0; c < Persons.Length; c++)
             * {
             *      Debug.Log(Persons[c]);
             * }
             */

            for (int i = 0; i < Persons.Length; i++)
            {
                /*
                 * if(Persons == null)
                 *      Debug.Log("F**k");
                 *
                 * if(Persons[i] == null)
                 *      Debug.Log("F**k^2");
                 *
                 * if(current == null)
                 *      Debug.Log("F**k^3");
                 *
                 * if(Persons[i].GetComponent<PersonStatus>() == null)
                 * {
                 *      Debug.Log(Persons[i]);
                 *      Debug.Log("F**k^4");
                 * }
                 *
                 * if(Persons[i].GetComponent<PersonStatus>().isAlive() == null)
                 *      Debug.Log("F**k^5");
                 */

                if (Persons[i] != current && Persons[i].GetComponent <PersonStatus>().isAlive())
                {
                    float dist = (navigator.transform.position - Persons[i].transform.position).sqrMagnitude;

                    if (dist < closestDist)
                    {
                        closestDist = dist;
                        closest     = i;
                    }
                }
            }

            if (closest != -1)
            {
                //Debug.Log("Recomputing target");
                navigator.target = Persons[closest].GetComponent <PersonStatus>();
            }
        }
        else
        {
            navigator.target = null;
        }
    }
コード例 #2
0
    public override void runNavigatorUpdate(UnitNavigationController navigator)
    {
        SetTarget(navigator.gameObject, navigator);

        if (navigator.target == null)
        {
            navigator.SetSpeed(navigator.RunningSpeed);
            navigator.Panicking();
        }
        else
        {
            navigator.SetSpeed(navigator.RunningSpeed);
            navigator.SetNavDestination(navigator.target.transform.position);
        }
    }
コード例 #3
0
    public void Update()
    {
        if (_activePower != null)
        {
            _activePower.deliverPowerEffects(this, animator, navigator);
        }

        if (animator == null)
        {
            animator = this.GetComponent <AnimationScript>();
        }

        if (navigator == null)
        {
            navigator = this.GetComponent <UnitNavigationController>();
        }
    }
コード例 #4
0
    public override void runNavigatorUpdate(UnitNavigationController navigator)
    {
        SetTarget(navigator.gameObject, navigator);

        if (navigator.target == null)
        {
            navigator.Stop();
            stop = true;
        }
        else
        {
            navigator.SetNavDestination(navigator.target.transform.position);
        }

        if (!stop)
        {
            navigator.SetSpeed(speed);
        }
    }
コード例 #5
0
 public override void runNavigatorUpdate(UnitNavigationController navigator)
 {
 }
コード例 #6
0
 public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
 {
 }
コード例 #7
0
ファイル: Calm.cs プロジェクト: AlessandroOsima/Judgement-Day
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Dead)
        {
            status.UnitStatus = PersonStatus.Status.Calm;
            status.Fear       = 0;
            navigator.SetNewPatrolDestination(navigator.Type);

            if (animator.powerEffect)
            {
                Destroy(animator.powerEffect);
            }

            animator.powerEffect = (GameObject)Instantiate(particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            Destroy(animator.powerEffect, 5.0f);
            status.ActivePower = null;
        }
    }
コード例 #8
0
 public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
 {
     status.UnitStatus  = PersonStatus.Status.Shocked;
     status.Fear        = this.Fear;
     status.ActivePower = null;
 }
コード例 #9
0
 public override void runNavigatorUpdate(UnitNavigationController navigator)
 {
     navigator.Panicking();
     navigator.SetSpeed(navigator.RunningSpeed);
 }
コード例 #10
0
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead && !started)
        {
            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            started           = true;
            status.UnitStatus = PersonStatus.Status.Panicked;
            BasePowerDealer fireDealer = (BasePowerDealer)GameObject.Find("Fire").GetComponent <BasePowerDealer>();
            Debug.Log(fireDealer.particleEffect);
            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear       = owner.Fear;
            status.UnitStatus = PersonStatus.Status.Dead;
        }

        if (status.UnitStatus == PersonStatus.Status.Dead)
        {
            Object.Destroy(animator.powerEffect, 1f);
            status.ActivePower = null;
        }
    }
コード例 #11
0
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Dead && timer == 0)
        {
            status.Fear = 0;
            navigator.Stop();
            status.UnitStatus = PersonStatus.Status.Idle;

            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
        }

        timer      += Time.deltaTime;
        status.Fear = 0;

        if (timer >= 10)
        {
            Object.Destroy(animator.powerEffect);
            status.UnitStatus = PersonStatus.Status.Calm;
            navigator.SetNewPatrolDestination(navigator.Type);
            status.ActivePower = null;
        }
    }
コード例 #12
0
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead)
        {
            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            timer             = 0;
            status.UnitStatus = PersonStatus.Status.Raged;
            navigator.Stop();
            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear = owner.Fear;
        }
        else
        {
            timer += Time.deltaTime;
            if (timer >= 10f)
            {
                status.UnitStatus = PersonStatus.Status.Concerned;
                status.Fear       = 0;
                Object.Destroy(animator.powerEffect);
                status.ActivePower = null;
                navigator.SetNewPatrolDestination(navigator.Type);
                navigator.target = null;
            }
        }

        if (status.UnitStatus == PersonStatus.Status.Dead)
        {
            if (animator.powerEffect != null)
            {
                Object.Destroy(animator.powerEffect);
            }
        }
    }
コード例 #13
0
ファイル: Fire.cs プロジェクト: AlessandroOsima/Judgement-Day
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead && !started)
        {
            started              = true;
            status.UnitStatus    = PersonStatus.Status.Panicked;
            animator.powerEffect = (GameObject)Instantiate(particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear = Fear;
        }
        else if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead)
        {
            timer += Time.deltaTime;
            if (timer >= 10f)
            {
                status.Fear       = 0;
                status.UnitStatus = PersonStatus.Status.Dead;
                navigator.Stop();
                started = false;
            }
        }

        if (status.UnitStatus == PersonStatus.Status.Dead)
        {
            Destroy(animator.powerEffect, 3f);
            status.ActivePower = null;
        }
    }
コード例 #14
0
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (timer == 0)
        {
            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            var renderers = status.gameObject.transform.GetComponentsInChildren <SkinnedMeshRenderer>();

            foreach (var renderer in renderers)
            {
                if (renderer.gameObject.name == "Character01")
                {
                    renderer.material.mainTexture = (Texture2D)Resources.Load("Character01Zombie", typeof(Texture2D));
                }
            }

            status.UnitStatus = PersonStatus.Status.Zombie;
            navigator.Stop();
            halfSpeed            = speed / 2;
            thirdSpeed           = speed / 3;
            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear = owner.Fear;
        }

        timer += Time.deltaTime;

        if (timer >= (aliveTime * 0.25f) && timer <= (aliveTime * 0.75f) && !stop)
        {
            //Debug.Log(speed);
            speed = halfSpeed;
            animator.SetSpeed(animator.MiddleSpeed);
        }

        /*
         * if(timer >= (aliveTime * 0.5f) && timer <= (aliveTime * 0.75f))
         * {
         *      Debug.Log(speed);
         *      speed = speed / 2;
         * }
         */

        if (timer >= (aliveTime * 0.75f) && !stop)
        {
            //Debug.Log(speed);
            speed = thirdSpeed;
            animator.SetSpeed(0.5f);
            animator.SetSpeed(animator.WalkingSpeed);
        }

        if (stop)
        {
            animator.SetSpeed(0);
        }

        if (timer >= aliveTime)
        {
            status.UnitStatus = PersonStatus.Status.Dead;
            status.Fear       = 0;
            Object.Destroy(animator.powerEffect);
        }
    }
コード例 #15
0
 public abstract void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator);
コード例 #16
0
 public abstract void runNavigatorUpdate(UnitNavigationController navigator);
コード例 #17
0
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead && !started)
        {
            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            if (Application.loadedLevelName == "TowerDefense")
            {
                burnTime = 3f;
            }
            started              = true;
            status.UnitStatus    = PersonStatus.Status.Panicked;
            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear = owner.Fear;
        }
        else if (status.UnitStatus != PersonStatus.Status.Raged && status.UnitStatus != PersonStatus.Status.Dead)
        {
            timer += Time.deltaTime;

            if (timer >= burnTime)
            {
                status.Fear       = 0;
                status.UnitStatus = PersonStatus.Status.Dead;
                navigator.Stop();
                started = false;
            }
        }

        if (status.UnitStatus == PersonStatus.Status.Dead)
        {
            Object.Destroy(animator.powerEffect, 3f);
            status.ActivePower = null;
        }
    }