mirror of
https://github.com/zhenyan121/Cubed.git
synced 2026-04-10 06:14:07 +08:00
refactor: adjust jump height
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user