Jump to content
  • Advertisement
Sign in to follow this  
TAlchemist

3d Player Controls

This topic is 4731 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

ok i have a test program i am developing in C++ with D3D 8.0 for now since i have some experience with it. Currently the player is the center of the screen the camera follows behind and the player can go forward or backward < absolutely + or - to Z location > and rotate left or right. The problem is i cant seem to figure how to get the player to go relatively forward or back based on which way he is facing. The camera follows even when i manual set the player position left or right < like a side step > but i cant even find how to get the acceleration to be applied in the orientation of the player. any help or links will be apretiated.

Share this post


Link to post
Share on other sites
Advertisement
can someone please help me with this? this is my first posting here but i have been looking for some time. i just need some assistance getting the player to move cause once i have that i have motion for all objects.

Share this post


Link to post
Share on other sites
1. Generate direction vector from the rotation in y axis of the player by

D3DXVector3 vecDir = D3DXVector3( cos(fRotY), 0, -sin(fRoty) );

2. Update the position according to the direction

posPlayer += vecDir * fSpeed;

you will find your player moving in that direction

Hope this helps u
alok

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
How do i get a 3d vector from a yaw and pitch angle?
i tried adapting this same 2d system using a -sin for the y axis but
the player only gets 90 degrees of accuracy bcause they
never stop moving forward

Share this post


Link to post
Share on other sites
Quote:
How do i get a 3d vector from a yaw and pitch angle?
i tried adapting this same 2d system using a -sin for the y axis but
the player only gets 90 degrees of accuracy bcause they
never stop moving forward
In addition to using sin(pitch) for the y component, try multiplying the x and z components by cos(pitch). (This is assuming that you want the player to be able to move up and down rather than only in the xz plane.)

Share this post


Link to post
Share on other sites
I actually got xz movement.
change in x = speedZ * sin( yaw )
change in z = speedZ * cos( yaw )

i can now move anywhere in my map and turn and everything. So far i dont know how to do the change in y. I even managed to get my camera to follow in a cirlce around the player using the same formula to get the x,z coords based on the players movement and the camera's distance and yaw.

Share this post


Link to post
Share on other sites
I have separate rotation and translation matrices for the player to position them in the world. What I do is take a vector for a point straight ahead of the player that is the distance away that I wish to move them, then apply the rotation matrix to that vector to get the movement component.

In my game world, the X axis points east-west, the Z axis is north-south, and the Y axis is up/down. This code is for Managed DirectX with C#:


// rotation of player
Matrix rotationMatrix = Matrix.RotationY(angle);

// speed is in units/sec, elapsedSeconds is for this frame
float distance = speed * elapsedSeconds;

// player starts off facing north, positive Z
Vector3 moveVector = new Vector3(0f, 0f, distance);

// apply rotation matrix to distance calc
moveVector.TransformCoordinate(rotationMatrix);

// move player position (plus sign doesn't show for some reason
// so I wrote out <plus>)
playerPosition = playerPosition <plus> moveVector;

Share this post


Link to post
Share on other sites
I like that, let me work that over in my head and on paper a bit. I am, gooing to be rewriting my object and mesh code soon so i prolly will implement it like that since it is much easier than what i am doing now i think.

But now i have a new problem. I have x,z movement and have y <height> clamping to the terrain for simplicity < you can fly and hover and jump but still are clamped > but i need a smooth way to rotate the character to face his target location.

I can get him to move to a target location but i cannot get him to turn there first.

like i want to be able to select a spot on the ground and have him turn then run there.

[Edited by - TAlchemist on June 10, 2005 11:57:39 AM]

Share this post


Link to post
Share on other sites
Hey jgoemat, i understand how you position and move yourself in space but how do you control player orientation for rendering. right now i have a vector i call rotation and i use the x,y, and z components as the radians for a rotation matrix

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!