// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2020-08-28 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G { using UnityEngine; /// /// /// [RequireComponent(typeof(SkillBird))] public class SkillBird : MonoBehaviour { private Collider _collider; private Animation _animation; private Vector3 _targetPos; private float _attackDelay; private int _attackCount; private Vector3 _edgePos; private Vector3 _rndPos; private Vector3 _direction; private Transform _cha1; private bool _attack; private bool _flyStart; public Transform pt_leaf; private void Awake() { _animation = GetComponent(); _animation["appear"].speed = 2.2f; _animation["fly_chosun"].speed = 0.2f; _collider = GetComponent(); _collider.enabled = false; } private void Start() { _cha1 = GameObject.FindWithTag("Player").transform; } private void OnEnable() { _animation["appear"].speed = 0f; _animation.Play("appear"); AnimationState animationState = _animation.PlayQueued("fly_chosun"); animationState.speed = 0.25f; _attack = false; _collider.enabled = false; //pt_leaf.particleEmitter().emit = true; _flyStart = false; _attackCount = 0; _attackDelay = 0f; } private void Update() { if (!_flyStart) { if (_attackDelay > 0.1f) { _animation["appear"].speed = 2.2f; Time.timeScale = 0.1f; _flyStart = true; } else { _attackDelay += Time.deltaTime; } return; } if (!_attack) { if (_animation.IsPlaying("fly_chosun")) { _attack = true; _attackDelay = 1.2f; _animation["appear"].speed = 0.25f; Time.timeScale = 1f; this.GetComponent().Play(); } return; } if (_attackDelay > 0.5f) { transform.position += transform.forward * Time.deltaTime * 2.5f; _attackDelay -= Time.deltaTime; _collider.enabled = true; return; } if (_attackDelay > 0f) { _attackDelay -= Time.deltaTime; transform.position += transform.forward * Time.deltaTime * 4f; _collider.enabled = false; return; } _attackDelay = 1.2f; _edgePos = Random.onUnitSphere * 1f; _edgePos.y = 0f; _attackCount++; if (_attackCount >= 6) { transform.position = Vector3.one * 15f; this.gameObject.SetActive(false); _collider.enabled = false; pt_leaf.particleEmitter().emit = false; } else if (_attack) { _rndPos = _cha1.position + _edgePos; _direction = _cha1.position - _rndPos; transform.position = _rndPos; this.GetComponent().Play(); if (_direction != Vector3.zero) { transform.rotation = Quaternion.LookRotation(_direction); } } } } }