void CosaConMovimiento::setMovingRight(bool isMovingRight) { // Para explicacion ver setMovingLeft() if (isMovingRight) { if (!isMovingLeft()) wasMovingLeftFirst = false; } else { if (isMovingLeft()) wasMovingLeftFirst = true; } movingRight = isMovingRight; }
void PhysicsComponent::correctPosition(GameObject& other, Scene& scene, Axis axis) { ColliderComponent* otherCollider = other.getComponent<ColliderComponent>(); switch(axis) { case Axis::X: if (isMovingLeft()) { owner_.setPosX(otherCollider->getRight() - collider_->getOffsetX()); } else { owner_.setPosX(otherCollider->getLeft() - collider_->getWidth() - collider_->getOffsetX()); } setVelX(0.0f); break; case Axis::Y: if (isMovingUp()) { owner_.setPosY(otherCollider->getBottom() - collider_->getOffsetY()); } else { owner_.setPosY(otherCollider->getTop() - collider_->getHeight() - collider_->getOffsetY()); falling_ = false; } setVelY(0.0f); break; default: __debugbreak(); break; } }