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_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

View File

@@ -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;

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) {
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;
}

View File

@@ -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;