133 lines
2.8 KiB
C#
133 lines
2.8 KiB
C#
![]() |
// ***********************************************************************
|
|||
|
// Assembly : Game
|
|||
|
// Author : Kimch
|
|||
|
// Created : 2020-08-28
|
|||
|
// Description :
|
|||
|
// Last Modified By :
|
|||
|
// Last Modified On :
|
|||
|
// ***********************************************************************
|
|||
|
// <copyright file= "SpiritSword_p2" company="Kimch"></copyright>
|
|||
|
// <summary></summary>
|
|||
|
// ***********************************************************************
|
|||
|
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<Collider>();
|
|||
|
//_trail = GetComponent<TrailRenderer>();
|
|||
|
}
|
|||
|
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|