Помогите добавить задержку в скрипт в юнити

у меня есть скрипт на враждебном персонаже. Суть в том что если он рядом с игроком то игрок получает урон. Скрипт я написал ,но дело в том что урон наносится каждый кадр пока враждебный моб рядом с игроком Можно ли сделать так что-бы урон наносился один раз в определённое время? Скрипт ниже

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class MobAI : MonoBehaviour {

    public int MobHP;
    public int Damage;
    public GameObject Mob;
    public GameObject Player;
    public float distanceToPLayer;

    void FixedUpdate () {
        distanceToPLayer = Vector3.Distance (Mob.transform.position,Player.transform.position);
        Mob.transform.LookAt (Player.transform);
        if (distanceToPLayer <= 6) {
            
    
        }
    }
    private void Attac(){
        PlayerHPsystem.PlayerHP -= 1*Damage;
        return WaitForSecondsRealtime(1f);
    }
}

Ответы (1 шт):

Автор решения: Nikolay Stuff

Один из вариантов:

private async Task Attack()
{
    PlayerHPsystem.PlayerHP -= 1 * Damage;
    await Task.Delay(TimeSpan.FromSeconds(1));
}

Пример:

private async Task Test()
{
    Debug.Log("Я начал работу!");
    await Task.Delay(TimeSpan.FromSeconds(10));
    Debug.Log("Я закончил работу!");
}

Результат:

введите сюда описание изображения

Ещё пример:

private IEnumerator Test()
{
    Debug.Log("Я начал работу!");
    yield return new WaitForSeconds(10);
    Debug.Log("Я закончил работу!");
}

private void Start()
{
    StartCoroutine(Test());
}

Результат:

введите сюда описание изображения

→ Ссылка