1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
||||||||||||||||
1 | ||||||||||||||||
sf::Time как работает?12.10.2020, 14:10. Показов 3180. Ответов 10
Как работает этот sf::Time? "sf::Time определяет временной интервал. Иными словами, не представляет какое-то конкретное значение даты и времени (год/месяц/день/час/минута/секунда), а просто показывает количество времени, и то как оно будет истолковываться, зависит уже от контекста."
// asMilliseconds() => 0, 1, 2 // asMicroseconds() => 600, 1200, 3200 // asSeconds() => 0.0009, 0.001278, 0.0031 Как теперь это всё применить к движению персонажа?У нас же есть начальные координаты отрисовки Х и У и пусть Х = 32, а У = 120. Везде вижу пример как сделать перемещение персонажа вот такой:
Я пробовал задать вот так, чтоб было более логично как мне кажется:
0
|
12.10.2020, 14:10 | |
Ответы с готовыми решениями:
10
Как работает модуль time Как работает команда time? то работает, а то не работает (run time error 800a0005) Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......" |
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.10.2020, 14:37 | 2 |
1
|
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
|
12.10.2020, 16:46 [ТС] | 3 |
вектора, скаляры - это все отлично.
Я не понимаю каким образом мы от координат Х = 32 У = 120 переходим к координатам Х = 0 или 1 или 2 или 3, то есть если сделать 1 клик движения вправо/влево и вывод playerX из player.move(playerX, 0); то я вижу там штук десять значений: 0 1 0 2 1 3 2 0 1 2 1 1 1 0 0 3 2 Почему их так много и как это работает?Каким образом эти значения взаимодействуют с изначальными координатами?Как узнать на сколько пикселей двигается игрок?Какое именно значение подставляется в движение?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.10.2020, 17:20 | 4 |
Без них никак.
Где вы там что видите, мне отсюда не видно. Но вангую, что вы видите не координаты, а изменение координат. ... Вы знаете, что делает метод player.move ?Как узнать, сколько метров пройдёт человек за одну секунду, если он движется со скоростью 2 м/с? И как потом узнать его координату через эту секунду, если предыдущая координата была 123 м (считаем, что движение вдоль одной оси). Вы статью по второй ссылке прочитали, или как увидели слово вектор, сразу глаза зажмурили? Добавлено через 1 минуту Не по теме: Я не "токсичный", просто манера такая :)
0
|
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
||||||
12.10.2020, 18:43 [ТС] | 5 | |||||
Пытаюсь найти что-то полезное, но пока что только 1000 страниц каких-то обрезков форумов выдаёт гугл.
Расстояние = скорость * время => за 1 секунду человек пройдёт 2 метра, за 2 секунды пройдёт 4 метра и т.д. или же ( 2, 0). Если нашу точку отсчёта принять за вектор ( 123, 0 ), то сложим их и получим получим (123, 0) + (2,0) = (125, 0). Вот связь новых координат со старыми. Верно? А если верно, то "Почему их так много и как это работает?" Код:
Не по теме: Глаза я зажмурил начиная с матриц. Решал я их в своё время очень легко, но сейчас я застрял вроде как на элементарных вещах, куда мне координаты через матрицы считать. И мы не в штатах, чтоб про токсичность думать
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|||||||||||
12.10.2020, 20:06 | 6 | ||||||||||
Просто добавляет вектор смещения к текущему положению
А если верно, то "Почему их так много и как это работает?" Потому что у вас частота кадров не ограничена, а ввод обрабатывается каждый кадр. Ваш код с небольшими правками:
0
|
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
|
12.10.2020, 20:41 [ТС] | 7 |
Спасибо, теперь понятней.
window.setFramerateLimit(60); //<----Синхронизируем частоту обновления приложения с вертикальной частотой монитора, чтоб не было наложения картинок. То есть если у меня частота обновления приложения 60 кадров в секунду, то я получу 60 значений dx за каждую секунду удержания кнопки влево/вправо? То что я сейчас вижу 3-5 значений означает, что я слишком медленно отжимаю клавиши движения?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.10.2020, 21:00 | 8 |
Не совсем. Для vsync есть метод
window.setVerticalSyncEnabled(true); А это просто ограничение кадров( != синхронизация ). Главное не используйте и то и другое одновременно, что нибудь одно. Не факт, это ограничение макс. fps. В зависимости от "оптимизации" кода можно получить и 2 fps Всмысле при однократном нажатии? Ну да. Добавлено через 3 минуты DessanM, у SFML есть неплохая онлайн документация. SFML
0
|
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
|
12.10.2020, 21:01 [ТС] | 9 |
window.clear(Color::Black);
window.draw(player); // отрисовать объект window.display(); // Отрисовка окна Или же функция main () и все эти команды отрисовки вызываются с максимальной скоростью процессора?То есть процессор обрабатывает весь код так быстро как может и потом высчитывает период отображения всего содержимого экрана, чтоб получилось 60 кадров в секунду?
0
|
6340 / 3511 / 1427
Регистрация: 07.02.2019
Сообщений: 8,977
|
|
12.10.2020, 21:11 | 10 |
Типа того. У окна есть свой таймер, поток просто усыпляется. Вот как это реализовано:
https://github.com/SFML/SFML/b... w.cpp#L215
1
|
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 106
|
|
12.10.2020, 21:38 [ТС] | 11 |
Вот теперь вообще всё встало на свои места)
Спасибо огромное!
0
|
12.10.2020, 21:38 | |
12.10.2020, 21:38 | |
Помогаю со студенческими работами здесь
11
Time, it needs time. Или: "Как установить системное время?" Time.sleep(1) работает не корректно Не работает Where . Between переменная типа Time SELECT не работает с полями DATE/TIME... Не работает макрос (Run-time error '5941') Не работает автофильтр, run-time error 1004 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства
Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
|
Что такое NullReferenceException и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
|
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
|
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
|
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
|
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
|
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее:
На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
|
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript
В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
|
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
|
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|