Помогите добавить задержку в скрипт в юнити
у меня есть скрипт на враждебном персонаже. Суть в том что если он рядом с игроком то игрок получает урон. Скрипт я написал ,но дело в том что урон наносится каждый кадр пока враждебный моб рядом с игроком Можно ли сделать так что-бы урон наносился один раз в определённое время? Скрипт ниже
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());
}
Результат: