Original Post
Ive recently made a class to draw my player on the screen. But wheni run it, all i get is my player in the middle, andmy camera spins around it when i move the mouse. Iknow im close but i really hate the camera, and the way the slightet thing screws it up, pleez help. Here is my code:
//Constructor
CPlayer::CPlayer()
{
double PlayerX = 0;
double PlayerY = 0;
double PlayerZ = 0;
double PlayerRX = 0;
double PlayerRY = 0;
double PlayerRZ = 0;
CVector3 vView = CVector3(0.0, 0.0, -1.0);
}
//Get Functions
double CPlayer::GetPlayerX()
{
return PlayerX;
}
double CPlayer::GetPlayerY()
{
return PlayerY;
}
double CPlayer::GetPlayerZ()
{
return PlayerZ;
}
//Set position
void CPlayer::SetPlayerPosition(double X, double Y, double Z)
{
PlayerX = X;
PlayerY = Y;
PlayerZ = Z;
}
//Move Player
void CPlayer::MovePlayer(float speed)
{
PlayerX += vView.x*speed;
PlayerY += vView.y*speed;
PlayerZ += vView.z*speed;
}
//Rotate Player
void CPlayer::RotatePlayer(float angleX, float angleY, float angleZ)
{
PlayerRX = angleX;
PlayerRY = angleY;
PlayerRZ = angleZ;
}
//Set View Vector
void CPlayer::SetViewVector()
{
POINT mouse;
GetCursorPos(&mouse);
vView.x = (float)(400 - mouse.x)/100;
vView.y = (float)(300 - mouse.y)/100;
}
//Draw Player
void CPlayer::DrawPlayer()
{
glTranslated(PlayerX,PlayerY,PlayerZ);
glRotatef(PlayerRX,1,0,0);
glRotatef(PlayerRY,0,1,0);
glRotatef(PlayerRZ,0,0,1);
TieFighter();
}
CPlayer::~CPlayer()
{
}
And my Main.cpp code:
case GAME:
glLoadIdentity();
gluLookAt(256, 30, 256, g_Player.GetPlayerX(),g_Player.GetPlayerY(), g_Player.GetPlayerZ(), 0, 1, 0);
g_Player.DrawPlayer();
g_Player.SetViewVector();
g_Player.MovePlayer(speed);
...
EDIT: plz dont flame me if this is a crap way of doing it, im not good with vectors as such, and this code is based of GameTutorials.com's Camera Class.
------------
"Here lies a toppled God,
His fall was not a small one,
We but built his pedastle,
A narrow, and a tall one"
Frank Herbert (Dune:Messiah)
[edited by - Kris2456 on June 7, 2004 3:11:56 PM]