Help Detecting side of an vector 3, How to check direction and face between 2 vector3
i just want to know if Point A its at Nort/South/East/West of PointB
ive done some attempts but cant get it working properly because sometimes it just works wells and others just doesnt so maybe im forgotting something, just lets say i got PointA and PointB as Vectors3 and i want to know wich side of PointA is actually the PointB
i got this:
ActualX = Actual.transform.position.x;
ActualZ = Actual.transform.position.z;
ActualPos = Actual.transform.position;
TargetX = Target.transform.position.x;
TargetZ = Target.transform.position.z;
TargetPos = Target.transform.position;
Distance = Vector3.Distance(ActualPos, TargetPos);
DistanceX = Mathf.Abs(ActualX - TargetX);
DistanceZ = Mathf.Abs(ActualZ - TargetZ);
if (DistanceX < DistanceZ)
{
float dirNum;
Vector3 heading = TargetPos - ActualPos;
dirNum = AngleDir(Actual.transform.right, heading, Actual.transform.up);
if (dirNum == -1) ActualFace = MCFace.Nort;
else ActualFace = MCFace.South;
}
else
{
float dirNum;
Vector3 heading = TargetPos - ActualPos;
dirNum = AngleDir(Actual.transform.forward, heading, Actual.transform.up);
if (dirNum == -1) ActualFace = MCFace.East;
else ActualFace = MCFace.West;
}
float AngleDir(Vector3 fwd, Vector3 targetDir, Vector3 up)
{
Vector3 perp = Vector3.Cross(fwd, targetDir);
float dir = Vector3.Dot(perp, up);
if (dir > 0f) return 1f;
else if (dir < 0f) return -1f;
else return 0f;
}
Also i would like to know if there is a simpler or cleaner way to do this, ive done my best but still getting troubles when selecting face for nort and south, idk why but somethimes it works well and sometimes just selecte south when should set north but idk why is this happening
Comment