Unity 2D'de karakterin oto atak animasyonuna cooldown ekleyince animasyon oynamıyor

BehknQux

Decapat
Katılım
16 Mart 2023
Mesajlar
26
Daha fazla  
Cinsiyet
Erkek
Merhaba. Sıkıntı hasAttacked değişkeninin direkt aktif olması işleri bozuyor . Kendimce kaçak bir çözüm ekledim ama daha iyi bir yolu var mıdır?

Kod:
using System.Collections;
using System.Collections.Generic;
using System.Net.Mail;
using System.Xml.Serialization;
using UnityEngine;

public class AutoAttack : MonoBehaviour
{
    Animator anim;
    public Transform attackPoint;
    private float attackRange = .75f;
    private float attackCooldown = 0.5f;
    private bool hasAttacked;
    public LayerMask enemyLayers;
    void Start()
    {
        anim = GetComponent<Animator>();
    }
    void Update()
    {
        Attack();
        AutoAttackAnimations();
    }
    private void Attack()
    {
        if (Input.GetButtonDown("Fire1") && !hasAttacked)
        {
            Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(attackPoint.position, attackRange, enemyLayers);
            StartCoroutine(SetAttackCooldown());
            foreach (Collider2D enemy in hitEnemies)
            {
                print("Enemy Hit: " + enemy.name);
            }
        }
    }
    private void AutoAttackAnimations()
    {
        if (Input.GetButtonDown("Fire1") && !hasAttacked)
        {
            anim.SetInteger("state", 2);
        }
    }
    private IEnumerator SetAttackCooldown()
    {
        yield return new WaitForSeconds(0.000000000000000000000001f);
        hasAttacked = true;
        yield return new WaitForSeconds(attackCooldown);
        hasAttacked = false;
    }
}
 

Technopat Haberler

Yeni konular

Geri
Yukarı