Quantcast
Channel: Questions in topic: "enemy"
Viewing all articles
Browse latest Browse all 1488

Player target enemies automatically

$
0
0
Hi I have this Script. I have 3 enemies but if 2 of them attack me I only can attack 1 of them at a time. I want not to target only one, but target any enemy who reach me without pressing a button. This is the code: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Targetting : MonoBehaviour { public List targets; public Transform selectedTarget; private Transform myTransform; // Use this for initialization void Start () { targets = new List(); selectedTarget = null; myTransform = transform; AddAllEnemies (); } public void AddAllEnemies() { GameObject[] go = GameObject.FindGameObjectsWithTag ("Enemy"); foreach (GameObject enemy in go) AddTarget (enemy.transform); } public void AddTarget(Transform enemy) { targets.Add(enemy); } private void SortTargetsByDistance() { targets.Sort (delegate(Transform t1, Transform t2) { return Vector3.Distance (t1.position, myTransform.position).CompareTo (Vector3.Distance (t2.position, myTransform.position)); }); } private void TargetEnemy() { if (selectedTarget == null) { SortTargetsByDistance (); selectedTarget = targets [0]; } else { int index = targets.IndexOf (selectedTarget); if (index < targets.Count - 1) { index++; } else { index = 0; } DeselectTarget (); selectedTarget = targets [index]; } SelectTarget (); } private void SelectTarget() { selectedTarget.GetComponent().material.color = Color.red; PlayerAttack pa = (PlayerAttack)GetComponent ("PlayerAttack"); pa.target = selectedTarget.gameObject; } private void DeselectTarget() { selectedTarget.GetComponent().material.color = Color.white; selectedTarget = null; } // Update is called once per frame void Update () { if (Input.GetKeyDown (KeyCode.Tab)) { TargetEnemy (); } } } I have another script named Player Attack in which the target is defined but I cant put all three enemies as a target. public class PlayerAttack : MonoBehaviour { public GameObject target; public float attackTimer; public float coolDown; // Use this for initialization void Start () { attackTimer = 0; coolDown = 0.0f; } // Update is called once per frame void Update () { if (attackTimer > 0) attackTimer -= Time.deltaTime; if (attackTimer < 0) attackTimer = 0; if(Input.GetKeyUp(KeyCode.Mouse0)){ if (attackTimer == 0) { Attack (); attackTimer = coolDown; } } } private void Attack() { float distance = Vector3.Distance (target.transform.position, transform.position); Vector3 dir = (target.transform.position - transform.position).normalized; float direction = Vector3.Dot (dir, transform.forward); Debug.Log (direction); if (distance < 8) { if (direction > 0.5f) { EnemyHealth eh = (EnemyHealth)target.GetComponent ("EnemyHealth"); eh.AddjustCurrentHealth (-10); } } } } please Help with the scripts!!

Viewing all articles
Browse latest Browse all 1488

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>