@Sterio23400
Начинающий разработчик Unity.

Как установить время срабатывания функции?

Добрый день всем. Практиковался в написании скритпа атака врага, когда герой находится на определенном от врага расстоянии. Есть также анимация атака удара, все работает, но дело в том, что уничтожение героя происходит независимо от анимации, то есть герой может быть уничтожен до того, как случится нужный момент анимации. Так вот как сделать в функции необходимую задержку, чтобы уничтожение проводилось ровно в нужный момент анимации удара (в данном случае когда рука врага выпрямится в ударе). Весь скрипт представлен ниже. Я также прикрепил ссылку на видео , где четко видна проблема, когда герой уничтожается до анимации удара врага.

using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using UnityEngine;

public class Enimy_attack : MonoBehaviour
{
public Transform attackPose;
public float attackRange;
public LayerMask whatIsEnimy;

private Transform target;

private Animator animator;

void Start()
{
animator = GetComponent();
target = GameObject.FindGameObjectWithTag("Player").GetComponent();
}

void Update()
{
if (Atack())
{
Collider2D[] HeroToDestroy = Physics2D.OverlapCircleAll(attackPose.position, attackRange, whatIsEnimy);
for (int i = 0; i < HeroToDestroy.Length; i++)
{
HeroToDestroy[i].GetComponent().Damage();
}
}
}

bool Atack()
{
if (Vector2.Distance(transform.position, target.position) < 6)
{
animator.SetTrigger("Dead");
return true;
}
else
{
return false;
}
}

void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(attackPose.position, attackRange);
}
}
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
В анимации делаете триггер-событие, который вызывает код в компоненте. И вот в нём уже удаляете объект.
m72iVsg.png?1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы