protected override void Shoot0() { TargetAble target = targets[0]; Vector3 point = target.GetPosition(); turret.LookAt(point); laserBeam.localRotation = turret.localRotation; float d = Vector3.Distance(turret.position, point); laserBeamScale.z = d; laserBeam.localScale = laserBeamScale; laserBeam.localPosition = turret.localPosition + 0.5f * d * laserBeam.forward; }
protected override bool ValidateTarget(TargetAble target) { if (!(target is GameActor)) { return(false); } if (!(owner is BlockerActor)) { return(false); } GameActor actor = (GameActor)target; BlockerActor blocker = (BlockerActor)owner; bool isBlock = blocker.IsBlockByMe(actor); return(isBlock); }
IEnumerator checkTarget() { //Check if old Target is valid if (target) { if (targetScript.isDestroyed()) { target = null; } else if (Vector3.Distance(target.position, transform.position) > aggroRange) { target = null; } } if (!target) { Collider[] hitColliders = Physics.OverlapSphere(EyePosition.position, aggroRange); foreach (Collider coll in hitColliders) { if (coll.tag == "Player" || coll.tag == "PlayerMinion") { //First Element with Tag Player/PlayerMinion gets Attacked/Targeted targetScript = coll.GetComponent <TargetAble>(); if (targetScript) { target = coll.transform; break; } } } } yield return(new WaitForSeconds(0.2f)); StartCoroutine(checkTarget()); }
void OnTriggerEnter(Collider info) { if (active && IsInLayerMask(info.gameObject, targetMask)) { //Deactivate the blast rigidbody.velocity = Vector3.zero; active = false; //Do Damage TargetAble targetScript = info.GetComponent <TargetAble>(); if (targetScript) { targetScript.doDamage(damage, blastColor); } //Do Explosion if (PartikelPoolName != "") { GameObject go = GameObjectPool.Instance.Spawn(PartikelPoolName, transform.position, Quaternion.identity); go.particleSystem.Play(); go.SendMessage("Reset", SendMessageOptions.DontRequireReceiver); go.SendMessage("SetPool", PartikelPoolName, SendMessageOptions.DontRequireReceiver); } } }