... lol, I love it...
void RunRatUnderDoor(object oRat, object oDoor)
{
// Get the posistion for the rat.
vector vRat = GetPosition(oRat);
// Get the position for the door
vector vDoor = GetPosition(oDoor);
// Subtract the position of the rat from the position of the door.
// To get the vector representing the position of the rat from the door.
// basicly what we are doing is both the rat and the door have (X,Y) positions
// (Rx,Ry) and (Dx,Dy)
// if we subtract the position of the rat from both of them in effect moving
// the line segment to where the rat is at cords (0,0) the
// (Rx,Ry) - (Rx,Ry) = (0,0)
// (Dx,Dy) - (Rx-Ry) = (Dx-Rx,Dy-Ry)
// in effect moving the line segment to where the rat is at cords (0,0) the
// the (Dx-Rx,Dy-Ry) Is in effect the vector showing both distance and
//Direction that the door is from the rat.
vector vDoorFromRat = vDoor-vRat;
//To get the position 1 unit beyond the door in a stright line from where
// the rat currently is, all we have to do is normilize the vector and add
// it to the position of the door.
vector vPastDoor1M = vDoor + VectorNormalize(vDoorFromRat);
//Build a location with the new vector and have the rat face in the same
//Direction that the door was from him. .
location lPastDoor = Location(
GetArea(oRat),
vPastDoor1M,
VectorToAngle(vDoorFromRat)
);
// Clear rats action que
AssignCommand(oRat,ClearAllActions(TRUE));
//Run to the door
AssignCommand(oRat,ActionMoveToObject(oDoor,TRUE));
//Lay flat
AssignCommand(oRat,ActionPlayAnimation( ANIMATION_LOOPING_DEAD_FRONT,1.0,2.0));
// Squezze under.
AssignCommand(oRat,ActionJumpToLocation(lPastDoor));
}
EDIT: Yes, I used more vars then I need to. That was just to make it easier to see what was going on.
Modifié par Lightfoot8, 24 janvier 2012 - 11:24 .