- Home /
i need help removing an error in my targetting/attack script
ive made this script and have had a bit of help but now i seem to get and error
and if you can help me set it to target the closest target(Enemy)/deselect when selecting new targget(Enemy) id be forever grateful :)
Assets/_Scripts/random scripts/PlayerAttack.cs(17,54): error CS0029: Cannot implicitly convert type UnityEngine.GameObject[]' to System.Collections.Generic.List'
/// /// PlayerAttack.cs /// /// This is a basic attack script to get us use to usng C# and Unity /// /// Attach ths script to your player /// using UnityEngine; using System.Collections; using System.Collections.Generic;
public class PlayerAttack : MonoBehaviour { public GameObject target; public float attackTimer; public float coolDown;
 List<GameObject> AllEnemiesList = GameObject.FindGameObjectsWithTag("Enemy"); 
 List<GameObject> VisibleEnemiesList = new List<GameObject>();
 // Use this for initialization
 void Start () {
     attackTimer = 0;
     coolDown = 2.0f;
     
     foreach (Transform Enemy in EnemiesList) {
 if (Enemy.GameObject.renderer.IsVisibleFrom(Camera.main)) {
     VisibleEnemiesList.Add (Enemy.GameObject);
 }
} }
 // 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;
             
             
         }
         if (Input.GetKey (KeyCode.Tab)) {
             TargetEnemy();
} }
 }
 
 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);
     
     if(distance < 2.5f) {
         if(direction > 0) {
             EnemyHealth eh = (EnemyHealth)target.GetComponent("EnemyHealth");
             eh.AddjustCurrentHealth(-10);
         }
     }
 }
}
Answer by dannyskim · Sep 11, 2013 at 09:55 PM
@meat5000 would be correct, you're trying to convert an array to a list, or rather, you're assigning the value of a List to an Array. But, there are some other problems you're going to come across.
- GameObject.FindGAmeObjectsWithTag()returns a GameObect[]. You're trying to set- AllEnemiesListequal to a GameObject[].
- You can't initialize - AllEnemiesListbefore runtime. You need to move that value assign to- Startor- Awake.
Your answer
 
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
c# help fix argument is out of range error 1 Answer
c# destroy gameobject on 0 hp 2 Answers
New to Unity, Need Help. 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                