public class TransformsController : MonoBehaviour
{
[SerializeField] private Transform m_player;
[SerializeField] private Transform m_targetTransform;
private void Awake()
{
Assert.IsNotNull(m_player);
Assert.IsNotNull(m_targetTransform);
}
private float GetDistanceBetweenTransforms()
{
var playerPosition = m_player.position;
var targetPosition = m_targetTransform.position;
var x = playerPosition.x - targetPosition.x;
var y = playerPosition.y - targetPosition.y;
var z = playerPosition.z - targetPosition.z;
return (float) Math.Sqrt(Mathf.Pow(x,2) + Mathf.Pow(y,2) + Mathf.Pow(z,2));
}
private float GetAngle()
{
var dirVector = m_targetTransform.position - m_player.position;
var dir = Vector3.Angle (m_player.forward, new Vector3(dirVector.x,0f,dirVector.z));
return dir;
}
private void GetDirection()
{
var relativePoint = m_player.InverseTransformPoint(transform.position);
if (relativePoint.x < 0f)
{
Debug.Log("Left");
}
else if (relativePoint.x > 0f)
{
Debug.Log("Right");
}
}
private void Update()
{
if (m_player == null || m_targetTransform == null)
{
return;
}
GetDirection();
Debug.Log("Distance " + GetDistanceBetweenTransforms());
Debug.Log("Angle " + GetAngle());
}
#if UNITY_EDITOR
private void OnDrawGizmos()
{
var playerDirection = m_player.TransformDirection(Vector3.forward) * 5;
Gizmos.DrawRay(m_player.position, playerDirection);
var targetTransformDirection = m_targetTransform.TransformDirection(Vector3.forward) * 5;
Gizmos.DrawRay(m_targetTransform.position, targetTransformDirection);
}
#endif
}Add a code snippet to your website: www.paste.org