From 7012e5f9fe643e4455d9ced48b281102b255b7e7 Mon Sep 17 00:00:00 2001 From: zhenyan121 <3367366583@qq.com> Date: Sat, 14 Mar 2026 18:00:02 +0800 Subject: [PATCH] fix: jump fails in certain cases --- include/Cubed/gameplay/player.hpp | 2 +- src/gameplay/chunk.cpp | 2 +- src/gameplay/player.cpp | 4 ++-- src/main.cpp | 3 ++- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/include/Cubed/gameplay/player.hpp b/include/Cubed/gameplay/player.hpp index 2727961..666b967 100644 --- a/include/Cubed/gameplay/player.hpp +++ b/include/Cubed/gameplay/player.hpp @@ -20,7 +20,7 @@ private: float m_speed = 10.0f; // player is tow block tall, the pos is the lower pos - glm::vec3 m_player_pos = glm::vec3(0.0f, 5.0f, 0.0f); + glm::vec3 m_player_pos = glm::vec3(0.0f, 15.0f, 0.0f); glm::vec3 m_front = glm::vec3(0, 0, -1); glm::vec3 m_right; MoveState m_move_state; diff --git a/src/gameplay/chunk.cpp b/src/gameplay/chunk.cpp index 867c8cd..3683031 100644 --- a/src/gameplay/chunk.cpp +++ b/src/gameplay/chunk.cpp @@ -75,7 +75,7 @@ const std::vector& Chunk::get_vertex_data() const{ void Chunk::init_chunk() { m_blocks.assign(CHUCK_SIZE * CHUCK_SIZE * CHUCK_SIZE, 0); for (int x = 0; x < CHUCK_SIZE; x++) { - for (int y = 0; y < 2; y++) { + for (int y = 0; y < 5; y++) { for (int z = 0; z < CHUCK_SIZE; z++) { m_blocks[get_index(x, y, z)] = 1; } diff --git a/src/gameplay/player.cpp b/src/gameplay/player.cpp index 106b380..8f521e7 100644 --- a/src/gameplay/player.cpp +++ b/src/gameplay/player.cpp @@ -147,7 +147,7 @@ void Player::update(float delta_time) { if (m_move_state.up) { auto new_pos = m_player_pos + glm::vec3(0.0f, 1.0f, 0.0f) * speed * 2.0f; new_pos.y += 2.0f; - if (!m_world.is_block(new_pos)) { + if (!m_world.is_block(glm::floor(new_pos))) { new_pos.y -= 2.0f; m_player_pos = new_pos; } @@ -185,7 +185,7 @@ void Player::update(float delta_time) { static bool should_ceil = true; - if (!m_world.is_block(glm::floor(m_player_pos))) { + if (!m_world.is_block(glm::floor(m_player_pos)) && !m_move_state.up) { m_player_pos -= glm::vec3(0.0f, 1.0f, 0.0f) * speed * 0.7f; } else if (should_ceil) { diff --git a/src/main.cpp b/src/main.cpp index e673df1..9a3dddb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -244,8 +244,9 @@ int main() { glfwSwapInterval(1); glfwSetWindowSizeCallback(window, window_reshape_callback); glfwSetKeyCallback(window, key_callback); - glfwSetMouseButtonCallback(window, mouse_button_callback); + glfwSetCursorPosCallback(window, cursor_position_callback); + glfwSetMouseButtonCallback(window, mouse_button_callback); MapTable::init_map(); texture_manager.init_texture(); world.init_world();