Пример #1
0
void CosaConMovimiento::setMovingRight(bool isMovingRight) {
	// Para explicacion ver setMovingLeft()
	if (isMovingRight) {
		if (!isMovingLeft())
			wasMovingLeftFirst = false;
	} else {
		if (isMovingLeft())
			wasMovingLeftFirst = true;
	}
	movingRight = isMovingRight;
}
Пример #2
0
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;
	}
}