@uriy99

Как сделать так чтобы анимация укуса врага проигрывалась в момент столкновения с игроком?

Имею три анимации у врага(покоя,хождения и укуса),распределено так:5effb06914f52953020265.jpeg
Ниже мой код патрулирования врага:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyPatrol : MonoBehaviour 
{
 public GameObject LeftBorder;  
 public GameObject RightBorder;
 public Rigidbody2D rigidBody;
 public bool isRightDirection;
 public float speed;
 public GroundDetection groundDetection;
 public Animator animator;
  void Update() 
  {
    if (isRightDirection && groundDetection.isGrounded) 
    {
 rigidBody.velocity= Vector2.right *speed;
    if(transform.position.x > RightBorder.transform.position.x)
 isRightDirection =!isRightDirection;
 
    }
    else if(groundDetection.isGrounded)
    {
 rigidBody.velocity= Vector2.left *speed;
 if(transform.position.x < LeftBorder.transform.position.x)
 isRightDirection =!isRightDirection;
 

  }
}

Буду рад любому совету и помощи по добавлению в скрипт новых строчек,которые бы заставляли анимации работать корректно.То есть чтобы анимации проигрывались плавно.Ну и также не против был бы услышать нужны ли триггеры в данном случае? P.S:урон обрабатывается по тегам "Player" и "Enemy".
Моя сцена выглядит примерно так:5effb13f4a493616753290.jpeg
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@uriy99 Автор вопроса
Доброго времени суток всем,спасибо за ответы)Я сделал свою версию анимаций и переходов.Код ниже:
public Animator animator;
    public SpriteRenderer spriteRenderer;
    private bool biting;

    void Update() {
        animator.SetFloat("Speed", Mathf.Abs(rb.velocity.x) > 0 ? 1 : 0);
        spriteRenderer.flipX = isRightDirection;

        if (biting) 
        {
            return;
        }
...
void OnCollisionEnter2D(Collision2D collision) 
    {
        if (collision.gameObject.tag == "Player") {
            biting = true;
            animator.SetBool("Biting", true);
            isRightDirection = collision.transform.position.x > transform.position.x;
        }
    }
...

В переходах убрал время задержки и готово,задание выполнено.Со скоростью поставил Greatest 0.01 и Less 0.01.Как-то так.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ReWire_92
Не совсем понимаю, а сейчас анимация укуса проигрывается не плавно или что? Судя по аниматору, из всех стэйтов переходы настроены, при срабатывании анимации плавность должна реализовываться переходами из одного стэйта в другой.
2D-коллайдеры на объектах игрока и врага имеются? Самый простой способ - при столкновении коллайдеров игрока и врага передавать в аниматор анимацию укуса, а аниматор при наличии настроенных переходов уже сам обеспечит плавность.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы