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