refactor: adjust jump height

This commit is contained in:
2026-03-30 20:58:37 +08:00
parent 618ba0ce1c
commit 5ce0810294
4 changed files with 15 additions and 24 deletions

View File

@@ -21,11 +21,11 @@ private:
float m_sensitivity = 0.15f; float m_sensitivity = 0.15f;
float m_speed = 4.5f; float max_speed = 4.5f;
float down_speed = 0.0f; float y_speed = 0.0f;
bool can_up = true; bool can_up = true;
float up_a = 0.0f;
float speed = 0; float speed = 0;
glm::vec3 direction = glm::vec3(0.0f, 0.0f, 0.0f); glm::vec3 direction = glm::vec3(0.0f, 0.0f, 0.0f);
glm::vec3 move_distance {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 // player is tow block tall, the pos is the lower pos

View File

@@ -9,8 +9,8 @@ public:
~Shader(); ~Shader();
Shader(const Shader&) = delete; Shader(const Shader&) = delete;
Shader& operator=(const Shader&) = delete; Shader& operator=(const Shader&) = delete;
Shader(Shader&& shader); Shader(Shader&& shader) noexcept;
Shader& operator=(Shader&& shader); Shader& operator=(Shader&& shader) noexcept;
void create(const std::string& name, const std::string& v_shader_path, const std::string& f_shader_path); void create(const std::string& name, const std::string& v_shader_path, const std::string& f_shader_path);
std::size_t hash() const; std::size_t hash() const;

View File

@@ -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) { 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); direction = glm::vec3(0.0f, 0.0f, 0.0f);
speed += ACCELERATION * delta_time; speed += ACCELERATION * delta_time;
if (speed > m_speed) { if (speed > max_speed) {
speed = m_speed; speed = max_speed;
} }
} else { } else {
speed += -DECELERATION * delta_time; 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}; 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) { if (m_move_state.up && can_up) {
up_a = 100.f; y_speed = 7.5;
can_up = false; can_up = false;
} }
y_a = -G + up_a; y_speed += -G * delta_time;
down_speed += y_a * delta_time; move_distance.y = y_speed * 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 // y
update_y_move(); update_y_move();
// x // x
@@ -314,7 +308,7 @@ void Player::update_move(float delta_time) {
update_z_move(); update_z_move();
if (m_player_pos.y < -15.0f) { 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)) { if (player_box.intersects(block_box)) {
m_player_pos.y -= move_distance.y; m_player_pos.y -= move_distance.y;
down_speed = 0.0f; y_speed = 0.0f;
if (move_distance.y > 0) {
up_a = 0;
}
if (move_distance.y < 0) { if (move_distance.y < 0) {
can_up = true; can_up = true;
} }

View File

@@ -14,7 +14,7 @@ Shader::Shader(const std::string& name, const std::string& v_shader_path, const
m_hash = HASH::str(name); m_hash = HASH::str(name);
} }
Shader::Shader(Shader&& shader) : Shader::Shader(Shader&& shader) noexcept:
m_hash(shader.m_hash), m_hash(shader.m_hash),
m_program(shader.m_program), m_program(shader.m_program),
m_name(std::move(shader.m_name)) 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_hash = shader.m_hash;
m_name = std::move(shader.m_name); m_name = std::move(shader.m_name);
m_program = shader.m_program; m_program = shader.m_program;