using UnityEngine;
|
|
public class FaceTargetXZ : MonoBehaviour
|
{
|
public Transform target;
|
public Vector3 targetPos;
|
|
void LateUpdate()
|
{
|
Vector3 _facingDir = transform.forward;
|
|
if (target != null)
|
{
|
_facingDir = (target.position - transform.position).normalized;
|
}
|
else if (targetPos != Vector3.zero)
|
{
|
_facingDir = (targetPos - transform.position).normalized;
|
}
|
else
|
{
|
_facingDir = transform.forward;
|
}
|
|
_facingDir.y = 0;
|
|
RaycastHit _hitInfo;
|
if (Physics.Raycast(transform.position + _facingDir + new Vector3(0, 20, 0), Vector3.down, out _hitInfo, 50, LayerUtility.WalkbleMask))
|
{
|
transform.LookAt(_hitInfo.point);
|
}
|
else
|
{
|
if (transform.forward != _facingDir && _facingDir != Vector3.zero)
|
{
|
transform.forward = _facingDir;
|
}
|
}
|
|
}
|
|
private void OnDestroy()
|
{
|
target = null;
|
}
|
}
|