我寫一個團結紙板遊戲,我想檢查我的相機是否正面臨着一個精靈與否。我寫了下面的代碼:檢查攝像機聚焦在精靈
private void GetSphericalCoordinates(Vector3 vector, out float tetta, out float fi)
{
float r = Mathf.Sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);
tetta = Mathf.Acos(vector.z/r);
fi = Mathf.Atan2(vector.y, vector.x);
}
public bool IsLookingAtMe(Vector3 point, Quaternion angle)
{
Vector3 topLeftPoint = new Vector3(transform.position.x - transform.localScale.x/2, transform.position.y - transform.localScale.y/2);
Vector3 topRightPoint = new Vector3(transform.position.x + transform.localScale.x/2, transform.position.y - transform.localScale.y/2);
Vector3 bottomLeftPoint = new Vector3(transform.position.x - transform.localScale.x/2, transform.position.y + transform.localScale.y/2);
Vector3 bottomRightPoint = new Vector3(transform.position.x + transform.localScale.x/2, transform.position.y + transform.localScale.y/2);
float topLeftTetta, topRightTetta, bottomLeftTetta, bottomRightTetta, lookTetta;
float topLeftFi, topRightFi, bottomLeftFi, bottomRightFi, lookFi;
GetSphericalCoordinates(topLeftPoint - point, out topLeftTetta, out topLeftFi);
GetSphericalCoordinates(topRightPoint - point, out topRightTetta, out topRightFi);
GetSphericalCoordinates(bottomLeftPoint - point, out bottomLeftTetta, out bottomLeftFi);
GetSphericalCoordinates(bottomRightPoint - point, out bottomRightTetta, out bottomRightFi);
lookTetta = angle.eulerAngles.x * Mathf.Deg2Rad;
lookFi = angle.eulerAngles.y * Mathf.Deg2Rad;
if (lookTetta >= topLeftTetta && lookTetta <= bottomRightTetta)
return true;
return false;
}
在我的代碼我找到4角我的精靈,它是一個正方形的,所以我有5個點,使一個金字塔。現在我需要檢查我的相機是否在我的金字塔內。
的問題是,我lookTetta和lookFi從不我的金字塔內。我只是檢查了Tetta。
請幫我一下吧。