Mario: detect left/right collision
This commit is contained in:
+3
-6
@@ -92,7 +92,6 @@ void pollEvents( SDLPP::Scene &scene ) {
|
||||
if ( event.window.event == SDL_WINDOWEVENT_RESIZED ) {
|
||||
scene.updateSizeAndPosition();
|
||||
if ( leftStop ) {
|
||||
auto rendDimsInt = renderer->getDimensions();
|
||||
auto rendDims = renderer->getDoubleDimensions();
|
||||
auto left = rendDims.getX() < 2.0
|
||||
? -( rendDims.getX() - 1 ) / 2.0 - 0.1
|
||||
@@ -141,16 +140,14 @@ void doInput( std::shared_ptr< SDLPP::Scene > scene ) {
|
||||
} else {
|
||||
mario->resetMovementY();
|
||||
}
|
||||
if ( mv.isStopped() ) {
|
||||
if ( mv.isStopped() || ( !mv.canGoLeft() && prevPos.getX() > mario->getPos().getX() ) || ( !mv.canGoRight() && prevPos.getX() < mario->getPos().getX() ) ) {
|
||||
mario->setPos( prevPos.getX(), mario->getPos().getY() );
|
||||
}
|
||||
auto playerX = mario->getRect().x;
|
||||
auto width = scene->getWidth();
|
||||
auto rightBarrier = width * 0.7;
|
||||
auto leftBarrier = width * 0.3;
|
||||
auto rightmostX =
|
||||
scene->rightmost()->getRect().x + scene->rightmost()->getRect().w;
|
||||
auto leftmostX = scene->leftmost()->getRect().x;
|
||||
scene->moveEverything(
|
||||
( playerX > rightBarrier && rightmostX > width ) *
|
||||
( rightBarrier - playerX ) / width,
|
||||
@@ -196,9 +193,9 @@ int main() {
|
||||
mario->addCollision(
|
||||
SDLPP::RectColider( 0.21, 0.85, 0.65, 0.16, MARIO_FLOOR_DETECT ) );
|
||||
mario->addCollision(
|
||||
SDLPP::RectColider( 0, 0, 0.1, 0.9, MARIO_SIDE_DETECT ) );
|
||||
SDLPP::RectColider( 0, 0, 0.1, 0.9, MARIO_LEFT_SIDE_DETECT ) );
|
||||
mario->addCollision(
|
||||
SDLPP::RectColider( 0.9, 0, 0.1, 0.9, MARIO_SIDE_DETECT ) );
|
||||
SDLPP::RectColider( 0.9, 0, 0.1, 0.9, MARIO_RIGHT_SIDE_DETECT ) );
|
||||
mario->setStatic( false );
|
||||
scene->addObject( mario );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user