У меня есть класс с именем «Player», в котором я обрабатываю движения, повышение уровня и т. Д. В игре, которую пытаюсь создать. В главном цикле в главном исходном файле у меня есть события клавиатуры (влево / вправо). Я хочу, чтобы движения могли знать, когда ваш персонаж уходит дальше, где это разрешено. Чтобы ответить на проблему, я поместил два оператора if.
У меня только проблемы с этим если заявление:
else if (sf::Keyboard::IsKeyPressed(sf::Keyboard::Right)) {
if (Player.getX() > 1279) {
Player.move(640,0);
}
Player.move(0.1,0);
}
Нет проблем с компиляцией. Единственная проблема, в отличие от другого оператора if, не возвращает спрайт в требуемую позицию. Если я уменьшу выражение if до 1000, спрайт исчезнет с экрана.
Любая помощь приветствуется.
Player.move(640,0);
Ваше перемещение вашего игрока 640 пикселей по оси X. Это означает, что когда игрок добирается до x > 1279
то есть в правом конце вашего мира вы перемещаете игрока дальше вправо. Так оно и исчезает.
Вы можете использовать setPosition
вместо move
здесь, или просто не двигайте плеер и т.д …
Других решений пока нет …