From 5ce0810294176a6da687f6881ae7848abb830dcf Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Mon, 30 Mar 2026 20:58:37 +0800 Subject: [PATCH] refactor: adjust jump height --- include/Cubed/gameplay/player.hpp | 6 +++--- include/Cubed/shader.hpp | 4 ++-- src/gameplay/player.cpp | 25 ++++++++----------------- src/shader.cpp | 4 ++-- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/include/Cubed/gameplay/player.hpp b/include/Cubed/gameplay/player.hpp index 3005476..04b5089 100644 --- a/include/Cubed/gameplay/player.hpp +++ b/include/Cubed/gameplay/player.hpp @@ -21,11 +21,11 @@ private: float m_sensitivity = 0.15f; - float m_speed = 4.5f; - float down_speed = 0.0f; + float max_speed = 4.5f; + float y_speed = 0.0f; bool can_up = true; - float up_a = 0.0f; float speed = 0; + glm::vec3 direction = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 move_distance {0.0f, 0.0f, 0.0f}; // player is tow block tall, the pos is the lower pos diff --git a/include/Cubed/shader.hpp b/include/Cubed/shader.hpp index 6c8c2c2..3e74de8 100644 --- a/include/Cubed/shader.hpp +++ b/include/Cubed/shader.hpp @@ -9,8 +9,8 @@ public: ~Shader(); Shader(const Shader&) = delete; Shader& operator=(const Shader&) = delete; - Shader(Shader&& shader); - Shader& operator=(Shader&& shader); + Shader(Shader&& shader) noexcept; + Shader& operator=(Shader&& shader) noexcept; void create(const std::string& name, const std::string& v_shader_path, const std::string& f_shader_path); std::size_t hash() const; diff --git a/src/gameplay/player.cpp b/src/gameplay/player.cpp index ac2cd85..5dd2d65 100644 --- a/src/gameplay/player.cpp +++ b/src/gameplay/player.cpp @@ -277,8 +277,8 @@ void Player::update_move(float delta_time) { if (m_move_state.forward || m_move_state.back || m_move_state.left || m_move_state.right || m_move_state.up) { direction = glm::vec3(0.0f, 0.0f, 0.0f); speed += ACCELERATION * delta_time; - if (speed > m_speed) { - speed = m_speed; + if (speed > max_speed) { + speed = max_speed; } } else { speed += -DECELERATION * delta_time; @@ -292,20 +292,14 @@ void Player::update_move(float delta_time) { move_distance = {direction.x * speed * delta_time, 0.0f, direction.z * speed * delta_time}; - static float y_a = 0.0f; if (m_move_state.up && can_up) { - up_a = 100.f; + y_speed = 7.5; can_up = false; } - - y_a = -G + up_a; - down_speed += y_a * delta_time; - move_distance.y = down_speed * delta_time; - up_a -= 490.0f * delta_time; - if (up_a < 0.0f) { - up_a = 0.0f; - } + + y_speed += -G * delta_time; + move_distance.y = y_speed * delta_time; // y update_y_move(); // x @@ -314,7 +308,7 @@ void Player::update_move(float delta_time) { update_z_move(); if (m_player_pos.y < -15.0f) { - m_player_pos.y = 15.0f; + m_player_pos = glm::vec3(0.0f, 20.0f, 0.0f); } } @@ -368,10 +362,7 @@ void Player::update_y_move() { }; if (player_box.intersects(block_box)) { m_player_pos.y -= move_distance.y; - down_speed = 0.0f; - if (move_distance.y > 0) { - up_a = 0; - } + y_speed = 0.0f; if (move_distance.y < 0) { can_up = true; } diff --git a/src/shader.cpp b/src/shader.cpp index ef0d685..334fac6 100644 --- a/src/shader.cpp +++ b/src/shader.cpp @@ -14,7 +14,7 @@ Shader::Shader(const std::string& name, const std::string& v_shader_path, const m_hash = HASH::str(name); } -Shader::Shader(Shader&& shader) : +Shader::Shader(Shader&& shader) noexcept: m_hash(shader.m_hash), m_program(shader.m_program), m_name(std::move(shader.m_name)) @@ -29,7 +29,7 @@ Shader::~Shader() { } } -Shader& Shader::operator=(Shader&& shader) { +Shader& Shader::operator=(Shader&& shader) noexcept{ m_hash = shader.m_hash; m_name = std::move(shader.m_name); m_program = shader.m_program;