46 lines
1.5 KiB
C#
46 lines
1.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class Projectile_Guide : ProjectileBase
|
|
{
|
|
private float dis;
|
|
private float speed;
|
|
private float waitTime;
|
|
Transform TargetTr;
|
|
|
|
public override void Set(ProjectileData _data)
|
|
{
|
|
base.Set(_data);
|
|
transform.rotation = Quaternion.LookRotation(transform.position - _data.shooter.Get_Center_position());
|
|
TargetTr = _data.target.transform;
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (DSUtil.CheckNull(TargetTr)) return;
|
|
|
|
waitTime += Time.deltaTime;
|
|
//1.5초 동안 천천히 forward 방향으로 전진합니다
|
|
if (waitTime < 1.5f)
|
|
{
|
|
speed = Time.deltaTime;
|
|
transform.Translate(transform.forward * speed, Space.World);
|
|
}
|
|
else
|
|
{
|
|
// 1.5초 이후 타겟방향으로 lerp위치이동 합니다
|
|
|
|
speed += Time.deltaTime;
|
|
float t = speed / dis;
|
|
|
|
transform.position = Vector3.LerpUnclamped(transform.position, TargetTr.position, t);
|
|
}
|
|
|
|
// 매프레임마다 타겟방향으로 포탄이 방향을바꿉니다
|
|
//타겟위치 - 포탄위치 = 포탄이 타겟한테서의 방향
|
|
Vector3 directionVec = TargetTr.position - transform.position;
|
|
Quaternion qua = Quaternion.LookRotation(directionVec);
|
|
transform.rotation = Quaternion.Slerp(transform.rotation, qua, Time.deltaTime * 2f);
|
|
}
|
|
} |