|
|
在P317中有如下代码:
BOOL cApp::Frame()
{
static DWORD Timer = timeGetTime();
unsigned long Elapsed;
float XMove, ZMove;
short i;
// Calculate elapsed time (plus speed boost)
Elapsed = (timeGetTime() - Timer) * 2;
Timer = timeGetTime();
// Get input
m_Keyboard.Read();
m_Mouse.Read();
// Process input and update everything.
// ESC quits program
if(m_Keyboard.GetKeyState(KEY_ESC) == TRUE)
return FALSE;
// Process movement
XMove = ZMove = 0.0f;
// Process keyboard input to move view
// Move viewpoint forward
if(m_Keyboard.GetKeyState(KEY_UP) == TRUE) {
XMove = (float)sin(m_Camera.GetYRotation()) * Elapsed;
ZMove = (float)cos(m_Camera.GetYRotation()) * Elapsed;
}
// Move viewpoint backward
if(m_Keyboard.GetKeyState(KEY_DOWN) == TRUE) {
XMove = -(float)sin(m_Camera.GetYRotation()) * Elapsed;
ZMove = -(float)cos(m_Camera.GetYRotation()) * Elapsed;
}
// Strafe left
if(m_Keyboard.GetKeyState(KEY_LEFT) == TRUE) {
XMove=(float)sin(m_Camera.GetYRotation()-1.57f)*Elapsed;
ZMove=(float)cos(m_Camera.GetYRotation()-1.57f)*Elapsed;
}
// Strafe right
if(m_Keyboard.GetKeyState(KEY_RIGHT) == TRUE) {
XMove=(float)sin(m_Camera.GetYRotation()+1.57f)*Elapsed;
ZMove=(float)cos(m_Camera.GetYRotation()+1.57f)*Elapsed;
}
// Update view coordinates
m_XPos += XMove;
m_ZPos += ZMove;
// Position camera and rotate based on mouse position
m_Camera.Move(m_XPos + XMove, 400.0f, m_ZPos + ZMove);
m_Camera.RotateRel((float)m_Mouse.GetYDelta() / 200.0f,
(float)m_Mouse.GetXDelta() / 200.0f,
0.0f);
// Set camera
m_Graphics.SetCamera(&m_Camera);
// Render everything
m_Graphics.Clear(D3DCOLOR_RGBA(0,64,128,255));
if(m_Graphics.BeginScene() == TRUE) {
// Render each room
for(i=0;i<8;i++)
m_RoomObjects.Render();
m_Graphics.EndScene();
}
m_Graphics.Display();
return TRUE;
}
其中 if(m_Keyboard.GetKeyState(KEY_UP) == TRUE) {
XMove = (float)sin(m_Camera.GetYRotation()) * Elapsed;
ZMove = (float)cos(m_Camera.GetYRotation()) * Elapsed;
}
// Move viewpoint backward
if(m_Keyboard.GetKeyState(KEY_DOWN) == TRUE) {
XMove = -(float)sin(m_Camera.GetYRotation()) * Elapsed;
ZMove = -(float)cos(m_Camera.GetYRotation()) * Elapsed;
}
// Strafe left
if(m_Keyboard.GetKeyState(KEY_LEFT) == TRUE) {
XMove=(float)sin(m_Camera.GetYRotation()-1.57f)*Elapsed;
ZMove=(float)cos(m_Camera.GetYRotation()-1.57f)*Elapsed;
}
// Strafe right
if(m_Keyboard.GetKeyState(KEY_RIGHT) == TRUE) {
XMove=(float)sin(m_Camera.GetYRotation()+1.57f)*Elapsed;
ZMove=(float)cos(m_Camera.GetYRotation()+1.57f)*Elapsed;
}
是什么意思呢?看了很久也没弄明白。。唉。。
另外,P320中,出现的那段代码也不明白是什么意思。。
希望高手们帮帮小弟。 [em17] |
|