//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; } }
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); } }
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>(); } }
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); } }
public override void runNavigatorUpdate(UnitNavigationController navigator) { }
public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator) { }
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; } }
public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator) { status.UnitStatus = PersonStatus.Status.Shocked; status.Fear = this.Fear; status.ActivePower = null; }
public override void runNavigatorUpdate(UnitNavigationController navigator) { navigator.Panicking(); navigator.SetSpeed(navigator.RunningSpeed); }
//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; } }
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; } }
//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); } } }
//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; } }
//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); } }
public abstract void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator);
public abstract void runNavigatorUpdate(UnitNavigationController navigator);
//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; } }