Не может перемещать и вращать два объекта CirclarShape вместе в SFML
Я определил автомобиль с именем CircularShape, имеющий 3 точки (отображаются в виде треугольника) и поле круглой формы, которое имеет круглую форму, я хочу, чтобы поле оставалось на кончике автомобиля и двигалось вместе с кончиком автомобиля, но проблема заключается в том, что Запустите программу, они не двигаются вместе, некоторые двусмысленные поведения есть, я думаю, есть некоторая проблема с положением и происхождением обеих форм, пожалуйста, исправьте меня, происхождение автомобиля не может быть изменено, хотя для некоторых будущих целей. Также кто-то может подсказать мне, как я могу убедиться, что мое поле автомобиля + не выходит за границы окна, вот код
Конечно, это не будет работать в codepad.org Я разместил ссылку только для удобства
1 ответ
В настоящее время вы пропускаете игровой цикл, поэтому все ваши движения будут очень непредсказуемыми, поскольку это зависит от скорости обработки вашего компьютера.
Для дальнейшей оценки предположим, что ваш автомобиль движется на 10 пикселей при каждом вызове кода. Если ваш процессор работает быстро и может выполнять ваш код 100 раз в секунду, ваша машина будет двигаться со скоростью 100*10 пикселей = 1000 пикселей в секунду. Если ваш компьютер может запускать код только 10 раз в секунду, ваш автомобиль будет двигаться 10*10 пикселей = 100 пикселей.
Вам следует ознакомиться с принципом игровых циклов. На форуме sfml уже есть много вопросов, и на их сайте есть руководство по измерению времени (см. http://www.sfml-dev.org/tutorials/2.4/system-time.php).
Чтобы убедиться, что ваши фигуры / лица / и т. Д. не выходите за пределы определенного региона, сначала вы должны обновить все позиции в игровом цикле, а затем проверить, разрешены ли новые позиции. В вашем примере вы бы проверили, меньше ли положение ваших фигур чем 0 или больше вашего размера окна. Этот вопрос также уже много раз оценивался на sfml-форуме, и вы должны найти гораздо лучшую помощь по поиску "ограничивающих рамок" на их форуме.
надеюсь это поможет. с наилучшими пожеланиями,
Essi