Ace_Man

04-25-2000, 09:49 PM

Can someone help me on a 3D movement problem...I got my code to move me in whatever direction I'm facing, however, when I turn, "I" rotate around my 3d world instead of it rotating around me. (Does that make sense?) I don't pivot in place....I'm struggling with the Trig for this so any help would be greatly appreciated...Thanks again...My code for what I have is below...

if(GetAsyncKeyState(VK_UP)) {

xPos -= (float) sin(yRot * pi/180)* 1.5;

zPos -= (float) cos(yRot * pi/180) * 1.5;

}

if(GetAsyncKeyState(VK_DOWN)) {

xPos += (float) sin(yRot * pi/180) *1.5;

zPos += (float) cos(yRot * pi/180) * 1.5;

}

if(GetAsyncKeyState(VK_RIGHT)) {

yRot -= 1.5;

}

if(GetAsyncKeyState(VK_LEFT)) {

yRot += 1.5;

}

and in my drawing method......

void drawPicture() {

glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

float scene = 360 - yRot;

glRotatef(scene, 0, 1, 0);

glTranslatef(-xPos, 0, -zPos);

...Draw my picture...

}

if(GetAsyncKeyState(VK_UP)) {

xPos -= (float) sin(yRot * pi/180)* 1.5;

zPos -= (float) cos(yRot * pi/180) * 1.5;

}

if(GetAsyncKeyState(VK_DOWN)) {

xPos += (float) sin(yRot * pi/180) *1.5;

zPos += (float) cos(yRot * pi/180) * 1.5;

}

if(GetAsyncKeyState(VK_RIGHT)) {

yRot -= 1.5;

}

if(GetAsyncKeyState(VK_LEFT)) {

yRot += 1.5;

}

and in my drawing method......

void drawPicture() {

glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);

glLoadIdentity();

float scene = 360 - yRot;

glRotatef(scene, 0, 1, 0);

glTranslatef(-xPos, 0, -zPos);

...Draw my picture...

}