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); } }