// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2020-08-28 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** namespace G { using UnityEngine; public class SpiritSword_p2 : MonoBehaviour { private bool _fireOn; private Transform _target; private Transform _parent; private Vector3 _targetPos; private Vector3 _direction; private float _delta; private float _moveSpeed; private float _rotateSpeed; private Collider _collider; private TrailRenderer _trail; private void Awake() { _collider = this.GetComponent(); //_trail = GetComponent(); } private void OnEnable() { _collider.enabled = false; _delta = 0f; //_trail.enabled = true; _fireOn = true; } private void Start() { _parent = transform.parent; FireSword(_parent); transform.parent = null; _moveSpeed = Random.Range(1.7f, 1.9f); _rotateSpeed = Random.Range(18f, 22f); } public void FireSword(Transform enemy) { _collider.enabled = true; _target = enemy; } public void FinishSword() { _collider.enabled = false; _fireOn = false; _delta = 0f; } private void Update() { if (_fireOn) { Vector3 position = transform.position; if (position.y > 0f) { if (_target == _parent) { _delta = 0.2f; } else if (_delta < 2f) { _delta += Time.deltaTime; } else { _delta = 2f; } if (_target != null) { _targetPos = _target.position; } else { _target = _parent; } _direction = _targetPos - position; if (_direction != Vector3.zero) { transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(_direction), _delta * _rotateSpeed * Time.deltaTime); } transform.Translate(Vector3.forward * (_moveSpeed * Time.deltaTime)); //transform.position = position + transform.forward * (_speed * Time.deltaTime); } else { _collider.enabled = false; _target = _parent; transform.forward = Vector3.up; transform.position = position + Vector3.up * (1.8f * Time.deltaTime); _delta = 0f; } } else { transform.forward = Vector3.up; Vector3 position = transform.position; position += Vector3.up * (1.8f * Time.deltaTime); transform.position = position; if (position.y > 1f) { this.gameObject.SetActive(false); //_trail.enabled = false; } } } } }