- 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 setAllEnemiesList
equal to a GameObject[].You can't initialize
AllEnemiesList
before runtime. You need to move that value assign toStart
orAwake
.
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