fixed player movement (hopefully)
This commit is contained in:
parent
23cf208d71
commit
8994f1e296
42
main.cpp
42
main.cpp
@ -53,7 +53,7 @@ int main(int argc, char *argv[])
|
|||||||
float leftRightVel;
|
float leftRightVel;
|
||||||
float angularVel;
|
float angularVel;
|
||||||
float rotVel;
|
float rotVel;
|
||||||
float movementAngle;
|
irr::core::vector2df movementVec;
|
||||||
|
|
||||||
pb.device = createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(pb.screenWidth, pb.screenHeight), 16, false, true, false, &pb.er);
|
pb.device = createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(pb.screenWidth, pb.screenHeight), 16, false, true, false, &pb.er);
|
||||||
pb.driver = pb.device -> getVideoDriver();
|
pb.driver = pb.device -> getVideoDriver();
|
||||||
@ -133,28 +133,31 @@ int main(int argc, char *argv[])
|
|||||||
// 180 - 200 grads
|
// 180 - 200 grads
|
||||||
// 270 - 300 grads
|
// 270 - 300 grads
|
||||||
|
|
||||||
if(pb.er.isKeyDown(irr::KEY_KEY_W))
|
movementVec = irr::core::vector2df(0, 0);
|
||||||
|
|
||||||
|
if(pb.er.isKeyDown(irr::KEY_KEY_W) || pb.er.isKeyDown(irr::KEY_KEY_S) || pb.er.isKeyDown(irr::KEY_KEY_D) || pb.er.isKeyDown(irr::KEY_KEY_A))
|
||||||
{
|
{
|
||||||
angularVel = pb.speed * frameDeltaTime;
|
angularVel = pb.speed * frameDeltaTime;
|
||||||
movementAngle = 180;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(pb.er.isKeyDown(irr::KEY_KEY_S))
|
if(pb.er.isKeyDown(irr::KEY_KEY_W))
|
||||||
{
|
{
|
||||||
angularVel = pb.speed * frameDeltaTime;
|
movementVec.Y += angularVel;
|
||||||
movementAngle = 0;
|
}
|
||||||
|
|
||||||
|
if(pb.er.isKeyDown(irr::KEY_KEY_S))
|
||||||
|
{
|
||||||
|
movementVec.Y -= angularVel;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(pb.er.isKeyDown(irr::KEY_KEY_A))
|
if(pb.er.isKeyDown(irr::KEY_KEY_A))
|
||||||
{
|
{
|
||||||
angularVel = pb.speed * frameDeltaTime;
|
movementVec.X -= angularVel;
|
||||||
movementAngle = 90;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else if(pb.er.isKeyDown(irr::KEY_KEY_D))
|
if(pb.er.isKeyDown(irr::KEY_KEY_D))
|
||||||
{
|
{
|
||||||
angularVel = pb.speed * frameDeltaTime;
|
movementVec.X += angularVel;
|
||||||
movementAngle = 270;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -231,13 +234,20 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
if(pb.er.isKeyDown(irr::KEY_KEY_W) || pb.er.isKeyDown(irr::KEY_KEY_S) || pb.er.isKeyDown(irr::KEY_KEY_D) || pb.er.isKeyDown(irr::KEY_KEY_A))
|
if(pb.er.isKeyDown(irr::KEY_KEY_W) || pb.er.isKeyDown(irr::KEY_KEY_S) || pb.er.isKeyDown(irr::KEY_KEY_D) || pb.er.isKeyDown(irr::KEY_KEY_A))
|
||||||
{
|
{
|
||||||
pb.player -> setPosition(irr::core::vector3df(playerPos.X - cos(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel, playerPos.Y, playerPos.Z + sin(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel));
|
// rotating movementVec vector by playerRot.Y degrees
|
||||||
|
movementAngle.X = movementAngle.X * cos(irr::core::degToRad(playerRot.Y)) - movementAngle.Y * sin(irr::core::degToRad(playerRot.Y));
|
||||||
|
movementAngle.Y = movementAngle.X * sin(irr::core::degToRad(playerRot.Y)) + movementAngle.Y * cos(irr::core::degToRad(playerRot.Y));
|
||||||
|
|
||||||
|
|
||||||
|
//pb.player -> setPosition(irr::core::vector3df(playerPos.X - cos(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel, playerPos.Y, playerPos.Z + sin(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel));
|
||||||
|
//pb.camera -> setTarget(irr::core::vector3df(playerPos.X - cos(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel, playerPos.Y + pb.verticalCamRot, playerPos.Z + sin(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel));
|
||||||
|
|
||||||
|
pb.player -> setPosition(irr::core::vector3df(playerPos.X - movementAngle.X * angularVel, playerPos.Y, playerPos.Z + movementAngle.Y * angularVel));
|
||||||
|
pb.camera -> setTarget(irr::core::vector3df(playerPos.X - movementAngle.X * angularVel, playerPos.Y + pb.verticalCamRot, playerPos.Z + movementAngle.Y * angularVel));
|
||||||
|
|
||||||
|
pb.player -> updateAbsolutePosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
pb.camera -> setTarget(irr::core::vector3df(playerPos.X - cos(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel, playerPos.Y + pb.verticalCamRot, playerPos.Z + sin(irr::core::degToRad(playerRot.Y + movementAngle)) * angularVel));
|
|
||||||
pb.player -> updateAbsolutePosition();
|
|
||||||
|
|
||||||
// Water on Level 7 //
|
// Water on Level 7 //
|
||||||
if(levelSwitcher.currentLevel == 7)
|
if(levelSwitcher.currentLevel == 7)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user