From 1cef1ed608d1a77a01fec5318fa8e50010e7b798 Mon Sep 17 00:00:00 2001 From: Peter Schaefer Date: Sun, 26 Apr 2015 17:11:05 +0200 Subject: [PATCH] fixed double Jump Bug (press Jump in 2 following Frames (mouse,leer)) --- Weave/Graphix/SceneObject.cpp | 22 ++++++++++++++-------- Weave/Graphix/SceneObject.h | 1 + 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Weave/Graphix/SceneObject.cpp b/Weave/Graphix/SceneObject.cpp index 5a53562..6b145d1 100644 --- a/Weave/Graphix/SceneObject.cpp +++ b/Weave/Graphix/SceneObject.cpp @@ -103,21 +103,28 @@ SceneObject::~SceneObject() // delete texture; } +float SceneObject::getFloor() const +{ + return 0; +} + void SceneObject::update(float deltaT) { if (!yStatic) { vec3 pos = getPosition(); - if (!floorBound() || ySpeed > 0) //Aktuelle Bodenhöhe + if (!floorBound() || ySpeed!=0) { - modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat; + if (pos.y + ySpeed*deltaT > getFloor()) + modelMat = translate(vec3(0.f, ySpeed*deltaT, 0.f))*modelMat; + else + { + modelMat = translate(vec3(0.f, getFloor() - pos.y, 0.f))*modelMat; + ySpeed = 0; + } ySpeed -= deltaT*YFALL_SPEED; } - else if(floorBound()) - { - ySpeed = 0; - } } @@ -154,8 +161,7 @@ void SceneObject::collisions(SceneObject* _other) bool SceneObject::floorBound() const { vec3 pos = getPosition(); - return (pos.y < 0); - //TODO real Floor? + return (pos.y <= getFloor()); } vec3 SceneObject::getPosition() const diff --git a/Weave/Graphix/SceneObject.h b/Weave/Graphix/SceneObject.h index 6efaa75..1261179 100644 --- a/Weave/Graphix/SceneObject.h +++ b/Weave/Graphix/SceneObject.h @@ -57,6 +57,7 @@ public: bool floorBound() const; + float getFloor() const; bool yStatic; float ySpeed; -- 2.47.3