Проиграть анимацию один раз

92
12 февраля 2021, 07:00

Есть тип врага, подходя к которому, он должен выпускать в меня снаряд, соответственно должна проигрываться анимация атаки, потом задержка в пару секунд (во время задержки переключаться на анимацию покоя), потом опять атака и так далее. Есть ли какой метод для того чтобы запустить анимацию 1 раз? Или какое-нибудь другое решение этой проблемы?

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

public class EnemyMagicPatrool : MonoBehaviour
{
    public bool enemyDead = false;
    public float health = 100;
    [Space(15)]
    public Transform target;
    public float engaugeDistance = 10f;
    public float moveSpeed = 3f;
    [Space(15)]
    private bool facingLeft = true;
    [Space(15)]
    Rigidbody2D rb;
    Animator anim;
    new CapsuleCollider2D collider;
    // isGrounded
    public bool isGrounded;
    public Transform groundCheck;
    private bool isGroundedFlip;
    public Transform groundCheckFlip;
    public LayerMask whathIsGroundFlip;
    public LayerMask whathIsGround;
    [Space(15)]
    public Vector3 direct;
    //  public PersControll persControll;
    //  [HideInInspector]
    public Transform bar;
    //   [HideInInspector]
    public GameObject destroyHP;
    private float timeByAttack = 2;
    private void Start()
    {
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        collider = GetComponent<CapsuleCollider2D>();
    }
    void Update()
    {
        direct = target.position - this.transform.position;
        isGrounded = Physics2D.OverlapArea(new Vector2(groundCheck.position.x - 0.1f, groundCheck.position.y - 0.1f), new Vector2(groundCheck.position.x + 0.1f, groundCheck.position.y + 0.1f), whathIsGround);
        LostHp();
        if (health <= 0)
        {
            rb.mass = 350f;
            rb.angularDrag = 50f;                        // ------------ подреглировать физику
            anim.SetBool("isDead", true);
            collider.direction = CapsuleDirection2D.Horizontal;
            collider.offset = new Vector2(1f, -2f);
            collider.size = new Vector2(5f, 0.5f);
            enemyDead = true;
            Invoke("Dead", 5f);
        }
        else
        {
            if (!isGrounded && !enemyDead)   
            {
                anim.SetBool("isJump", true);
                anim.SetBool("isIdle", false);
                anim.SetBool("isWalking", false);
                anim.SetBool("isAttacking", false);
                Debug.DrawLine(target.position, this.transform.position, Color.green);
            }
            else
            {
                if (isGrounded && !enemyDead && (direct.x < 10f && direct.x > -10f) && (direct.y < 2f && direct.y > -2f)) // если в зоне агро
                {
                    anim.SetTrigger("isAttackingTr");
                    //anim.SetBool("isWalking", false);
                    //anim.SetBool("isIdle", false);
                    //anim.SetBool("isJump", false);
                }
                else if (isGrounded && !enemyDead && ((direct.x > 10f || direct.x < -10f) || (direct.y > 2f || direct.y < -2f))) // вне зоны агро
                {
                    anim.SetTrigger("isIdleTr");
                    //anim.SetBool("isWalking", true);
                    //anim.SetBool("isJump", false);
                    //anim.SetBool("isAttacking", false);
                }
            }
        }
    }
    void Dead()
    {
        Destroy(gameObject);
    }
    void LostHp()
    {
        if (health > 0)
        {
            bar.localScale = new Vector3(health / 100f, 1f);
        }
        else
        {
            Destroy(destroyHP);
        }
    }
    public void Flip()
    {
        facingLeft = !facingLeft;
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }
}
READ ALSO
Отображение объекта

Отображение объекта

Есть часть кода игры типа Space Invaders:

106
C# Цикл For (при DataGridView)

C# Цикл For (при DataGridView)

Появилась проблема, есть код (ниже написан):

109
C# Получение Ip host mac локальной сети

C# Получение Ip host mac локальной сети

Нужно вывести все айдпи,хосты и мак адреса всей локальной сети

93