• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

How To Change A Units Yaw And Pitch With Code

Level 12
Joined
Feb 23, 2008
Messages
587
How To Change A Units Yaw And Pitch With Code


What Is Yaw And Pitch?

325px-Flight_dynamics_with_text.png



Functions

ChangeOrientation(target,yaw,pitch)

Takes the desired target(unit), yaw, pitch.
It then changes the targets(unit) yaw and pitch Instantly.


ChangePitch(target,pitch)
Takes the desired target(unit), pitch.
It then changes the targets(unit) pitch Instantly.


Code:
////////////////////////////////////////////////////
// ChangeOrientation                              //
////////////////////////////////////////////////////
void ChangeOrientation (unit target, fixed yaw, fixed pitch) 
{    	
    // Variable Declarations
    fixed forwardX;
    fixed forwardY;
    fixed forwardZ;
    fixed upX;
    fixed upY;
    fixed upZ;

    // Variable Initialization    
    forwardX = Cos(yaw) * Sin(pitch);
    forwardY = Sin(yaw) * Sin(pitch);
    forwardZ = Cos(pitch);
    upX = 0;
    upY = 0;
    upZ = 0;
    
    // Implementation
    libNtve_gf_SendActorMessageToUnit(target, libNtve_gf_SetRotation(forwardX, forwardY, forwardZ, upX, upY, upZ));
}

////////////////////////////////////////////////////
// ChangePitch                                    //
////////////////////////////////////////////////////
void ChangePitch(unit target, fixed pitch)
{
    // Variable Declarations
    fixed yaw;
    fixed forwardX;
    fixed forwardY;
    fixed forwardZ;
    fixed upX;
    fixed upY;
    fixed upZ;

    // Variable Initialization
    yaw = UnitGetFacing(target);  
    forwardX = Cos(yaw) * Sin(pitch);
    forwardY = Sin(yaw) * Sin(pitch);
    forwardZ = Cos(pitch);
    upX = 0;
    upY = 0;
    upZ = 0;
    
    // Implementation
    libNtve_gf_SendActorMessageToUnit(target, libNtve_gf_SetRotation(forwardX, forwardY, forwardZ, upX, upY, upZ));
	
}

Notes

This only works when the unit isn't moving.
If a unit, turns upside down at any point it will roll 180 Degrees.
Ground units don't seem to work even if you make them float.


Credits

Arkless
eXirrah
Twinmold20
Grogian
Rover2341


Attached Map

The attached map allows you to change the pitch and yaw by pressing A + D For Yaw, And W + D For Pitch. It was made by Grogain and Edited by Rover2341. It is a GUI Version.
 

Attachments

  • PitchAndRoll AWSD.zip
    36.4 KB · Views: 102
Last edited:
Top