Как сделать так чтобы анимация укуса врага проигрывалась в момент столкновения с игроком?Unity2d
Имею три анимации у врага(покоя,хождения и укуса),распределено так:
Ниже мой код патрулирования врага:
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;
}
}
Буду рад любому совету и помощи по добавлению в скрипт новых строчек,которые бы заставляли анимации работать корректно.То есть чтобы анимации проигрывались плавно.Ну и также не против был бы услышать нужны ли триггеры в данном случае?
Ответы (1 шт):
Автор решения: Юрий
→ Ссылка
Доброго времени суток всем кто ещё ждёт вразумительный ответ.Я сделал свою версию анимаций и переходов.Код ниже:
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.Как-то так.