diff --git a/SQCSim2021/openglcontext.cpp b/SQCSim2021/openglcontext.cpp index 83462be..cb78fb6 100644 --- a/SQCSim2021/openglcontext.cpp +++ b/SQCSim2021/openglcontext.cpp @@ -152,7 +152,7 @@ void OpenglContext::ShowCrossCursor() const void OpenglContext::InitWindow(int width, int height) { - m_app.create((m_fullscreen ? sf::VideoMode::getFullscreenModes()[0] : sf::VideoMode(width, height, 32)), m_title.c_str(), m_fullscreen ? sf::Style::Fullscreen : (sf::Style::Resize | sf::Style::Close), sf::ContextSettings(32, 8, 4)); + m_app.create((m_fullscreen ? sf::VideoMode::getFullscreenModes()[0] : sf::VideoMode(width, height, 32)), m_title.c_str(), m_fullscreen ? sf::Style::Fullscreen : (sf::Style::Resize | sf::Style::Close), sf::ContextSettings(32, 8, 8)); } OpenglContext::MOUSE_BUTTON OpenglContext::ConvertMouseButton(sf::Mouse::Button button) const diff --git a/SQCSim2021/player.cpp b/SQCSim2021/player.cpp index 5767bf3..d9e2feb 100644 --- a/SQCSim2021/player.cpp +++ b/SQCSim2021/player.cpp @@ -21,9 +21,16 @@ void Player::Move(bool front, bool back, bool left, bool right, bool jump, bool static float yrotrad = 0; static float xrotrad = 0; static bool jumped = false; + static int dashtimeout = 0; - if (jump && !jumped) { - accjmp = m_jumpforce; + if (dashtimeout > 0) { + dash = false; + --dashtimeout; + } + else if (dash) dashtimeout = 100; + + if ((jump || dash) && !jumped) { + accjmp = jump? m_jumpforce: 0.1f; jumped = true; } else if (m_position.y > -0.2f && accjmp != 0) { @@ -41,10 +48,10 @@ void Player::Move(bool front, bool back, bool left, bool right, bool jump, bool if (jump) accjmp -= elapsedTime * 0.7; else accjmp -= elapsedTime * 0.9; } - front = false; // Empêche le déplacement dans les airs. - back = false; - left = false; - right = false; + //front = false; // Empêche le déplacement dans les airs. + //back = false; + //left = false; + //right = false; } else accjmp = 0; @@ -58,27 +65,33 @@ void Player::Move(bool front, bool back, bool left, bool right, bool jump, bool m_position.y += accjmp; - if (!jumped || left || right || front || back) { + if (!jumped && ( left || right || front || back)) { yrotrad = (m_rotY / 57.2957795056f); // 180/Pi = 57.295... xrotrad = (m_rotX / 57.2957795056f); } if (front) { - if (accWS < m_topspeed) accWS += elapsedTime * 30; else accWS = m_topspeed; - + if (!jumped) + if (accWS < m_topspeed) accWS += elapsedTime * 30; else accWS = m_topspeed; + if (dash) { + accWS *= 3.f; + //m_position.y += float(-sin(xrotrad)) * elapsedTime * 70; // à remettre pour implémenter une fonction de vol. + } m_position.x += float(sin(yrotrad)) * elapsedTime * accWS; m_position.z += float(-cos(yrotrad)) * elapsedTime * accWS; - // m_position.y += float(-sin(xrotrad)) * elapsedTime * 20; // à remettre pour implémenter une fonction de vol. } else if (back) { - if (accWS > -m_topspeed) accWS -= elapsedTime * 30; else accWS = -m_topspeed; - + if (!jumped) + if (accWS > -m_topspeed) accWS -= elapsedTime * 30; else accWS = -m_topspeed; + if (dash) { + accWS *= 3.f; + //m_position.y += float(sin(xrotrad)) * elapsedTime * 20; // à remettre pour implémenter une fonction de vol. + } m_position.x += float(-sin(yrotrad)) * elapsedTime * -accWS; m_position.z += float(cos(yrotrad)) * elapsedTime * -accWS; - // m_position.y += float(sin(xrotrad)) * elapsedTime * 20; // à remettre pour implémenter une fonction de vol. } else if (accWS != 0) { - accWS = accWS > 0 ? accWS - elapsedTime * (m_position.y > 0.f ? 10 : 60) : accWS + elapsedTime * (m_position.y > 0.f ? 10 : 60); + accWS = accWS > 0 ? accWS - elapsedTime * (m_position.y > 0.f ? 10 : 120) : accWS + elapsedTime * (m_position.y > 0.f ? 10 : 120); m_position.x += float(sin(yrotrad)) * elapsedTime * accWS; m_position.z += float(-cos(yrotrad)) * elapsedTime * accWS; @@ -86,17 +99,21 @@ void Player::Move(bool front, bool back, bool left, bool right, bool jump, bool } if (left) { - if (accAD < m_topspeed) accAD += elapsedTime * 30; else accAD = m_topspeed; + if (!jumped) + if (accAD < m_topspeed) accAD += elapsedTime * 30; else accAD = m_topspeed; + if (dash) accAD *= 3.f; m_position.x += float(-cos(yrotrad)) * elapsedTime * accAD; m_position.z += float(-sin(yrotrad)) * elapsedTime * accAD; } else if (right) { - if (accAD > -m_topspeed) accAD -= elapsedTime * 30; else accAD = -m_topspeed; + if (!jumped) + if (accAD > -m_topspeed) accAD -= elapsedTime * 30; else accAD = -m_topspeed; + if (dash) accAD *= 3.f; m_position.x += float(cos(yrotrad)) * elapsedTime * -accAD; m_position.z += float(sin(yrotrad)) * elapsedTime * -accAD; } else if (accAD != 0) { - accAD = accAD > 0 ? accAD - elapsedTime * (m_position.y > 0.f ? 10 : 60) : accAD + elapsedTime * (m_position.y > 0.f ? 10 : 60); + accAD = accAD > 0 ? accAD - elapsedTime * (m_position.y > 0.f ? 10 : 120) : accAD + elapsedTime * (m_position.y > 0.f ? 10 : 120); m_position.x += float(-cos(yrotrad)) * elapsedTime * accAD; m_position.z += float(-sin(yrotrad)) * elapsedTime * accAD; if (accAD < 1 && accAD > -1) accAD = 0; diff --git a/SQCSim2021/player.h b/SQCSim2021/player.h index 3f5b80e..5933383 100644 --- a/SQCSim2021/player.h +++ b/SQCSim2021/player.h @@ -16,9 +16,8 @@ private: Vector3f m_position; float m_rotX = 0; float m_rotY = 0; - float m_topspeed = 20; - float m_jumpforce = 0.4f; - + float m_topspeed = 30; + float m_jumpforce = 0.6f; }; #endif //_PLAYER_H__