142 lines
3.0 KiB
C#
142 lines
3.0 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2020-08-28
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "SpiritSword_p3" company="Kimch"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
namespace G
|
|
{
|
|
using UnityEngine;
|
|
|
|
public class SpiritSword_p3 : MonoBehaviour
|
|
{
|
|
private bool fireon;
|
|
|
|
private Transform mytransform;
|
|
|
|
private Transform target;
|
|
|
|
private Transform myparent;
|
|
|
|
private Vector3 targetpos;
|
|
|
|
private Vector3 directionVector;
|
|
|
|
private float f_speed;
|
|
|
|
private Collider mycollider;
|
|
|
|
private TrailRenderer mytrail;
|
|
|
|
private Vector3 n_pos;
|
|
|
|
private bool finish;
|
|
|
|
private void Awake()
|
|
{
|
|
mytransform = base.transform;
|
|
mycollider = base.GetComponent<Collider>();
|
|
mytrail = GetComponent<TrailRenderer>();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
finish = false;
|
|
mycollider.enabled = false;
|
|
f_speed = 0.4f;
|
|
mytrail.enabled = true;
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
myparent = mytransform.parent;
|
|
mytransform.parent = null;
|
|
}
|
|
|
|
public void FireSword(Transform _enemy)
|
|
{
|
|
mycollider.enabled = true;
|
|
target = _enemy;
|
|
targetpos = target.position;
|
|
directionVector = targetpos - mytransform.position;
|
|
directionVector.y = 0f;
|
|
if (directionVector != Vector3.zero)
|
|
{
|
|
mytransform.forward = directionVector;
|
|
}
|
|
f_speed = 0.4f;
|
|
fireon = true;
|
|
}
|
|
|
|
public void FinishSword()
|
|
{
|
|
mycollider.enabled = false;
|
|
fireon = false;
|
|
f_speed = 0f;
|
|
finish = true;
|
|
}
|
|
|
|
public void SetPos(int _index)
|
|
{
|
|
switch (_index)
|
|
{
|
|
case 0:
|
|
n_pos = new Vector3(1f, 0f, 1f) * 0.13f;
|
|
break;
|
|
case 1:
|
|
n_pos = new Vector3(1f, 0f, -1f) * 0.13f;
|
|
break;
|
|
case 2:
|
|
n_pos = new Vector3(-1f, 0f, 1f) * 0.13f;
|
|
break;
|
|
case 3:
|
|
n_pos = new Vector3(-1f, 0f, -1f) * 0.13f;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (finish)
|
|
{
|
|
mytransform.position += Vector3.up * 3f * Time.deltaTime;
|
|
Vector3 position = mytransform.position;
|
|
if (position.y > 1f)
|
|
{
|
|
finish = false;
|
|
mytrail.enabled = false;
|
|
this.gameObject.SetActive(false);
|
|
CancelInvoke();
|
|
}
|
|
}
|
|
else if (fireon)
|
|
{
|
|
f_speed -= Time.deltaTime;
|
|
if (f_speed < 0f)
|
|
{
|
|
fireon = false;
|
|
return;
|
|
}
|
|
mytransform.up = directionVector;
|
|
mytransform.position += directionVector * Time.deltaTime * f_speed * 20f;
|
|
}
|
|
else
|
|
{
|
|
mycollider.enabled = false;
|
|
directionVector = myparent.position - mytransform.position + myparent.forward * n_pos.z + myparent.right * n_pos.x;
|
|
if (directionVector != Vector3.zero)
|
|
{
|
|
mytransform.rotation = Quaternion.Lerp(mytransform.rotation, Quaternion.LookRotation(directionVector), Time.deltaTime * 12f);
|
|
}
|
|
mytransform.position += directionVector * 3f * Time.deltaTime;
|
|
f_speed = 0f;
|
|
}
|
|
}
|
|
}
|
|
}
|