Есть тип врага, подходя к которому, он должен выпускать в меня снаряд, соответственно должна проигрываться анимация атаки, потом задержка в пару секунд (во время задержки переключаться на анимацию покоя), потом опять атака и так далее. Есть ли какой метод для того чтобы запустить анимацию 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;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужно вывести все айдпи,хосты и мак адреса всей локальной сети