using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace MyFrameworkPure
{
public enum FacePivot
{
PositiveZ,
NegativeZ
}
///
/// 控制物体朝向目标
///
public class LookAtTarget : MonoBehaviour
{
[SerializeField] private Transform target;
[SerializeField] private bool keepHorizontal;
[SerializeField] private FacePivot facePivot;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Vector3 dir = target.position - transform.position;
if (keepHorizontal)
dir.y = 0;
if (dir == Vector3.zero)
return;
switch (facePivot)
{
case FacePivot.PositiveZ:
transform.forward = dir;
break;
case FacePivot.NegativeZ:
transform.forward = -dir;
break;
}
}
///
/// 目标变换
///
public Transform Target
{
get => target;
set => target = value;
}
///
/// 物体是否保持水平
///
public bool KeepHorizontal
{
get => keepHorizontal;
set => keepHorizontal = value;
}
///
/// 物体正朝向轴
///
public FacePivot ForwardPivot
{
get => facePivot;
set => facePivot = value;
}
}
}