Object direction in respect to another
by Ronald J Nelson · in Torque Game Engine Advanced · 05/17/2008 (5:41 pm) · 2 replies
I am working on another aspect of a collision damage application and find I need some help with this.
How can I determine the percentage that one object is facing another? In script preferred.
How can I determine the percentage that one object is facing another? In script preferred.
#2
Ironically, I had these functions in my AI script and never even thought about them.
05/17/2008 (7:05 pm)
Thankyou very much Peter. Ironically, I had these functions in my AI script and never even thought about them.
Torque 3D Owner Peter Simard
Default Studio Name
function GetAngle(%sourceObj,%targetObj) { return check2DAngletoTarget(%sourceObj,%targetObj); %eyeVec =VectorNormalize(%sourceObj.getEyeVector()); %toObjVec =VectorSub(%targetObj.getPosition(),%sourceObj.getPosition()); %dot =VectorDot(%eyeVec,VectorNormalize(%toObjVec)); %rad =mAcos(%dot); return mRadToDeg(%rad); } function getAngleofVector(%vec) { %vector = VectorNormalize(%vec); %vecx = getWord(%vector,0); %vecy = getWord(%vector,1); if(%vecx >= 0 && %vecy >= 0) %quad = 1; else if(%vecx >= 0 && %vecy < 0) %quad = 2; else if(%vecx < 0 && %vecy < 0) %quad = 3; else %quad = 4; %angle = mATan(%vecy/%vecx, -1); %degangle = mRadToDeg(%angle); switch(%quad) { case 1: %angle = %degangle-90; case 2: %angle = %degangle+270; case 3: %angle = %degangle+90; case 4: %angle = %degangle+450; } if (%angle < 0) %angle = %angle + 360; return %angle; } function check2DAngletoTarget(%obj, %tgt) { %eyeVec = VectorNormalize(%obj.getEyeVector()); %eyeangle = getAngleofVector(%eyeVec); %posVec = VectorSub(%tgt.getPosition(), %obj.getPosition()); %posangle = getAngleofVector(%posVec); %angle = %posangle - %eyeAngle; %angle = %angle ? %angle : %angle * -1; if (%angle < 0) %angle = %angle + 360; if(%angle > 180) %angle = 360 - %angle; //echo("ANGLE:" SPC %angle); return %angle; }