From 770b54bdd5b35545914b57f14fa60c1205e3e7b0 Mon Sep 17 00:00:00 2001 From: Nathalie Seen Date: Fri, 11 Jun 2021 09:59:35 +0200 Subject: [PATCH] [ADD] character falls when it hits a tree --- src/entities/main_character.cpp | 121 +++++++++++++++++++------------- src/entities/main_character.h | 2 +- src/scenes/in_Game_Scene.cpp | 2 +- 3 files changed, 76 insertions(+), 49 deletions(-) diff --git a/src/entities/main_character.cpp b/src/entities/main_character.cpp index 83c9ca5..cdf53c7 100644 --- a/src/entities/main_character.cpp +++ b/src/entities/main_character.cpp @@ -7,67 +7,94 @@ #include"../renderEngine/loader.h" namespace entities { + float movement_speed; + float down_speed; + float side_speed; + bool is_playing; + MainCharacter::MainCharacter(const models::TexturedModel& model, const glm::vec3& position, const glm::vec3& rotation, float scale, const collision::Box& bounding_box) : CollisionEntity(model, position, rotation, scale, bounding_box) { + is_playing = true; } - glm::vec3 MainCharacter::Move(GLFWwindow* window) + void MainCharacter::Move(GLFWwindow* window) { - float movement_speed = -0.5f; //Forward speed adjustment, bee is moving at a standard speedrate - float down_speed = -1.0f; //Down speed adjustment, downspeed is difference between down_speed and UP_SPEED - float side_speed = 0; //Side speed adjustment + if (is_playing) { + movement_speed = -0.5f; //Forward speed adjustment, bee is moving at a standard speedrate + down_speed = -1.0f; //Down speed adjustment, downspeed is difference between down_speed and UP_SPEED + side_speed = 0; //Side speed adjustment - //For gameplay with use of keyboard keys: W, A, S, D - //W: Go forward - //A: Go left - //S: Go backwards - //D: Go right - //TODO Implement CV actions - if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) - { - movement_speed -= SIDE_SPEED; - } + //For gameplay with use of keyboard keys: W, A, S, D + //W: Go forward + //A: Go left + //S: Go backwards + //D: Go right + //TODO Implement CV actions + SetRotation(glm::vec3(0, 90, 0)); + if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) + { + movement_speed -= SIDE_SPEED; + } - if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) - { - movement_speed += SIDE_SPEED; - } + if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) + { + movement_speed += SIDE_SPEED; + } + //top right + if (glfwGetKey(window, GLFW_KEY_E) == GLFW_PRESS) + { + side_speed += SIDE_SPEED; + down_speed += UP_SPEED; + } + //right + if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) + { + side_speed += SIDE_SPEED; + } + //top left + if (glfwGetKey(window, GLFW_KEY_Q) == GLFW_PRESS) + { + down_speed += UP_SPEED; + side_speed -= SIDE_SPEED; + } + //left + if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) + { + side_speed -= SIDE_SPEED; + } - if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) - { - side_speed += SIDE_SPEED; + if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) + { + down_speed += UP_SPEED; + SetRotation(glm::vec3(10, 90, 0)); + } + if (glfwGetKey(window, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS) + { + down_speed -= UP_SPEED; + } } + IncreasePosition(glm::vec3(side_speed, down_speed, movement_speed)); - if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) - { - side_speed -= SIDE_SPEED; - } - - if (glfwGetKey(window, GLFW_KEY_SPACE) == GLFW_PRESS) - { - down_speed += UP_SPEED; - } - if (glfwGetKey(window, GLFW_KEY_LEFT_SHIFT) == GLFW_PRESS) - { - down_speed -= UP_SPEED; - } - IncreasePosition(glm::vec3(side_speed, down_speed, movement_speed)); - - //Use only for binding bee to house, such that it doesn't go outside of the room. - //TODO delete when boundingbox is implemented! - if (position.x > 190) position.x = 190; - else if (position.x < -190) position.x = -190; - if (position.y > 350) position.y = 350; - else if (position.y < -40) position.y = -40; - - //Move player bounding box according to the position on screen - MoveCollisionBox(); - return glm::vec3(side_speed, down_speed, movement_speed ); + //Use only for binding bee to house, such that it doesn't go outside of the room. + //TODO delete when boundingbox is implemented! + if (position.x > 190) position.x = 190; + else if (position.x < -190) position.x = -190; + if (position.y > 350) position.y = 350; + else if (position.y < -40) position.y = -40; + //Move player bounding box according to the position on screen + MoveCollisionBox(); + if (glfwGetKey(window, GLFW_KEY_Z) == GLFW_PRESS) + { + is_playing = true; + } } void MainCharacter::OnCollide(const collision::Collision& collision) { - std::cout << "collide" << std::endl; + down_speed = -2.0f; + movement_speed = 0.0f; + is_playing = false; + std::cout << "collision" << std::endl; } } \ No newline at end of file diff --git a/src/entities/main_character.h b/src/entities/main_character.h index 7c444c4..d1029a2 100644 --- a/src/entities/main_character.h +++ b/src/entities/main_character.h @@ -31,7 +31,7 @@ namespace entities * * @return: Vector with the adjusted side_speed, down_speed, and movement_speed */ - glm::vec3 Move(GLFWwindow* window); + void Move(GLFWwindow* window); void OnCollide(const collision::Collision& collision) override; }; diff --git a/src/scenes/in_Game_Scene.cpp b/src/scenes/in_Game_Scene.cpp index 6a17a05..b7d0d79 100644 --- a/src/scenes/in_Game_Scene.cpp +++ b/src/scenes/in_Game_Scene.cpp @@ -179,7 +179,7 @@ namespace scene { //camera.Move(window); - glm::vec3 movement = main_character->Move(window); + main_character->Move(window); //std::cout << "x get: " << movement.x << "\ny get: " << movement.y << "\nz get: " << movement.z << "\n"; camera.Follow(main_character->GetPosition());