Skip to main content
GameDev.net gamedev.net
🔒 Locked

Camera Issues

Started by dakeeper1995 Oct 5, 2012 at 1:25 PM 2 replies 1.3k views
Original Post
dakeeper1995
dakeeper1995
Hey guys, first post here.

I have a slight problem with my camera right now. When I press the right or left keys (A/D), the screen jumps in that direction(by a lot more then just the key press), movement goes as planned, and when the key is released the screen jumps back to where it would've been. Here's the relevant pieces of code:

The message loop:

while( msg.message != WM_QUIT )
{
if ( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
if (msg.message==WM_KEYDOWN) OnKeyDown(msg.wParam);
else if (msg.message==WM_KEYUP) OnKeyUp(msg.wParam);
else{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
}

else Render();
}



void OnKeyDown(WPARAM key){
switch (key){
case 0x41:
ak=TRUE;
break;
case 0x53:
sk=TRUE;
break;
case 0x44:
dk=TRUE;
break;
case 0x57:
wk=TRUE;
break;
default:
break;
}
}
void OnKeyUp(WPARAM key){
switch (key){
case 0x41:
ak=FALSE;
break;
case 0x53:
sk=FALSE;
break;
case 0x44:
dk=FALSE;
break;
case 0x57:
wk=FALSE;
break;
default:
break;
}

}

if (ak==TRUE) EyePt-=sideVector;
if (sk==TRUE) EyePt-=CurrentView
if (dk==TRUE) EyePt+=sideVector;
if(wk==TRUE) EyePt+=CurrentView;


I'm working on implementing a camera class, but right now I'm very confused as to why my camera jumps whenever the A/D buttons are pressed. SOrry for the messy coding.
Cornstalks
Cornstalks
I don't see anything obviously wrong from this code. What does your message handler do?

You can try setting break points for when a key is pressed/released and stepping through your program so you can watch values change and see if they are what they should be.
BCullis
BCullis
A few other questions:

Where is sideVector defined/updated (in case it does get modified) and what is it initialized to?

How is EyePoint used in the rendering process?

Does EyePoint get reset anywhere in the render process or outside this message loop at all?
Hazard Pay :: FPS/RTS in SharpDX (gathering dust, retained for... historical purposes)
DeviantArt :: Because right-brain needs love too (also pretty neglected these days)
dakeeper1995
dakeeper1995
I figured it out by myself actually. Sorry, I didn't provide more code because I cannibalized a whole bunch of projects together and, seeing as I'm new to programming, I doubt anyone could've understood what most of it was (I have very bad programming conventions)

In case anyone was wondering (or had/have the same problem), I calculated my look at point (D3DXMatrixLookAtLH pAt) before keyboard input changed pEye. My view matrix was passed to DirectX afterwards, so there was a small jump on my screen.

Solved by placing the four "if(...)EyePt..." lines before calculating pAt.

Thanks for the replies.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.