When I do this code, I get the errors:
40, 29: No overload for method ‘Distance’ takes 3 arguments
43,25: The best overloaded method match for ‘UnityEngine.MonoBehaviour.Start.Coroutine(System.Collections.IEnumerator)’ has some invalid arguments
43,25: Argument ‘#1’ cannot convert ‘method group’ expression to type ‘System.Collections.IEnumerator’
Type ‘Entity’ does not contain a definition for ‘Health’ and has no extension method ‘Health’ of type ‘Entity’ could be found(are you missing a using directive or an assembly reference?)
using UnityEngine;
using System.Collections;
public class Attacking : Entity {
public Entity Target;
public int Damage;
public float AttackRange;
public float AttackDistance;
private bool CanAttack;
void Start () {
CanAttack = true;
}
// Update is called once per frame
void Update () {
if (CanAttack == true)
{
if (Target.rigidbody2D.transform.position.x > rigidbody2D.transform.position.x + AttackRange)
{
rigidbody2D.transform.position += Vector3.right * Speed * Time.deltaTime;
}
if (Target.rigidbody2D.transform.position.x < rigidbody2D.transform.position.x - AttackRange)
{
rigidbody2D.transform.position += Vector3.left * Speed * Time.deltaTime;
}
if (Target.rigidbody2D.transform.position.y > rigidbody2D.transform.position.y + AttackRange)
{
rigidbody2D.transform.position += Vector3.up * Speed * Time.deltaTime;
}
if (Target.rigidbody2D.transform.position.y < rigidbody2D.transform.position.y - AttackRange)
{
rigidbody2D.transform.position += Vector3.down * Speed * Time.deltaTime;
}
}
if (Vector2.Distance (rigidbody2D.transform.position, Target.rigidbody2D,transform.position) <= AttackDistance && CanAttack == true)
{
Attack ();
StartCoroutine (AttackDelay);
}
}
void Die () {
}
void Attack () {
Target.Health -= Damage;
}
IEnumerator AttackDelay () {
CanAttack = false;
yield return new WaitForSeconds (1);
CanAttack = true;
}
}