Hey, im trying to include a cooldown for my enemy attack. At the moment when the player enters the trigger the enemy attacks really fast and doesnt stop . heres my script, can anybody help?
using UnityEngine; using System.Collections;
public class EnemyTrigger : MonoBehaviour {
public float weaponDamage;
private float AttackTime;
private float attackcd = 20;
private bool canAttack = false;
public GameObject hitFX;
public Collider2D attackTrigger;
float nextattackTime;
Animator enemyattackAnim;
// Use this for initialization
void Start () {
enemyattackAnim = GetComponentInParent<Animator> ();
attackTrigger.enabled = true;
}
// Update is called once per frame
void Update () {
attackTrigger.enabled = true;
AttackTime = attackcd;
{
}
}
void OnTriggerStay2D(Collider2D other){
if (other.gameObject.layer == LayerMask.NameToLayer ("Attackable")) {
enemyattackAnim.SetTrigger ("enemyattack");
AttackTime = attackcd;
PlayerHealth1 hurtPlayer = other.gameObject.GetComponent<PlayerHealth1> ();
hurtPlayer.addDamage (weaponDamage);{
Instantiate (hitFX, transform.position, transform.rotation);
}
}
}
private void Swordattack()
{
AttackTime += Time.deltaTime;
if (AttackTime >= attackcd) {
canAttack = true;
AttackTime = 0;
}
if (canAttack) {
canAttack = false;
enemyattackAnim.SetTrigger ("enemyattack");
}
}
}
Comment
Seriously, you should clean your code, and you will see your mistakes :
using UnityEngine;
using System.Collections;
public class EnemyTrigger : $$anonymous$$onoBehaviour {
public Collider2D attackTrigger;
public GameObject hitFX;
public float weaponDamage;
private float cooldownTimer ;
private float cooldownValue = 20;
private Animator enemyattackAnim;
// Use this for initialization
void Start ()
{
enemyattackAnim = GetComponentInParent<Animator> ();
attackTrigger.enabled = true;
cooldownTimer = cooldownValue ;
}
void Update()
{
cooldownTimer -= Time.deltaTime ;
}
void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.layer == Layer$$anonymous$$ask.NameToLayer ("Attackable") && cooldownTimer <= 0 )
{
Attack( other.gameObject.GetComponent<PlayerHealth1>() ) ;
}
}
private void Attack( PlayerHealth1 health )
{
if( health == null )
{
Debug.LogError("The target hasn't health !")
return ;
}
// Hurt player
health.addDamage (weaponDamage);
// Show visual effects
enemyattackAnim.SetTrigger ("enemyattack");
Instantiate (hitFX, transform.position, transform.rotation);
// Reset cooldown
cooldownTimer = cooldownValue ;
}
}
Your answer
Follow this Question
Related Questions
How to make an enemy 2d chasing player? 2 Answers
I need the Nav Mesh Stop , I need the Animation to Play Javascript 0 Answers
how to make an enemy into a second player 0 Answers
Advance AI ( League of Legends ) 0 Answers
How do I make an enemy go through walls, etc and follow then kill the player? 0 Answers