Basic hit detection

This commit is contained in:
2023-03-21 14:42:54 -07:00
parent 3a790e57c9
commit 978c420046
20 changed files with 343 additions and 41 deletions

View File

@ -6,8 +6,6 @@
#include "PlayerController.hpp"
#include "game/DawnGame.hpp"
#include "scene/components/physics/3d/CapsuleCollider.hpp"
using namespace Dawn;
PlayerController::PlayerController(SceneItem *item) : SceneItemComponent(item) {
@ -16,7 +14,7 @@ PlayerController::PlayerController(SceneItem *item) : SceneItemComponent(item) {
std::vector<SceneItemComponent*> PlayerController::getDependencies() {
return {
(this->characterController = item->getComponent<CharacterController3D>())
(this->characterController = item->getComponent<CharacterController2D>())
};
}
@ -35,7 +33,7 @@ void PlayerController::onStart() {
if(inputMove.x != 0 || inputMove.y != 0) {
float_t angle = atan2(inputMove.y, inputMove.x);
glm::vec3 movement = glm::vec3(cos(angle), 0, sin(angle));
glm::vec2 movement(cos(angle), sin(angle));
characterController->velocity += movement * delta * moveSpeed;
}
}, getScene()->eventSceneUpdate);

View File

@ -4,12 +4,12 @@
// https://opensource.org/licenses/MIT
#pragma once
#include "scene/components/physics/3d/CharacterController3D.hpp"
#include "scene/components/physics/2d/CharacterController2D.hpp"
namespace Dawn {
class PlayerController : public SceneItemComponent {
protected:
CharacterController3D *characterController;
CharacterController2D *characterController;
public:
float_t moveSpeed = 40.0f;

View File

@ -12,11 +12,9 @@
#include "scene/components/display/MeshHost.hpp"
#include "scene/components/display/material/SimpleTexturedMaterial.hpp"
#include "scene/components/example/ExampleSpin.hpp"
#include "scene/components/physics/3d/SphereCollider.hpp"
#include "scene/components/physics/3d/CubeCollider.hpp"
#include "scene/components/physics/3d/CapsuleCollider.hpp"
#include "display/mesh/SphereMesh.hpp"
#include "display/mesh/CapsuleMesh.hpp"
#include "scene/components/physics/2d/BoxCollider.hpp"
#include "scene/components/physics/2d/CharacterController2D.hpp"
#include "display/mesh/CubeMesh.hpp"
namespace Dawn {
class HelloWorldScene : public Scene {
@ -24,23 +22,16 @@ namespace Dawn {
Camera *camera;
void stage() override {
auto playerItem = this->createSceneItem();
auto player = playerItem->addComponent<PlayerController>();
playerItem->addComponent<MeshRenderer>();
auto meshHost = playerItem->addComponent<MeshHost>();
playerItem->addComponent<SimpleTexturedMaterial>();
auto hitbox = playerItem->addComponent<CapsuleCollider>();
playerItem->addComponent<CharacterController3D>();
CapsuleMesh::create(&meshHost->mesh, hitbox->radius, hitbox->height);
playerItem->transform.setLocalPosition(glm::vec3(0, 4, 0));
auto wall = this->createSceneItem();
auto wallHitbox = wall->addComponent<CubeCollider>();
// wall->transform.setLocalPosition(glm::vec3(-5, -1, -5));
wallHitbox->min = -(wallHitbox->max = glm::vec3(5, 0.25f, 5));
auto hitbox = playerItem->addComponent<BoxCollider>();
playerItem->addComponent<CharacterController2D>();
auto wallItem = this->createSceneItem();
auto wallBox = wallItem->addComponent<BoxCollider>();
wallBox->min = glm::vec2(-4, -3);
wallBox->max = glm::vec2(-3, 3);
camera = Camera::create(this);
camera->transform->lookAt(glm::vec3(10, 10, 10), glm::vec3(0, 0, 0));
// auto gameCamera = camera->item->addComponent<GameCamera>();