Редагувати:
Дивіться відповідь @ Bluescrn на це запитання; він детальніше розглядає слабкі місця в відтворенні елементів керування, а не вектори руху або положення.
-
Ви на правильному шляху. Ось підхід, який я б застосував:
Контролери
Створіть клас Controller, який отримує введення з клавіатури і передає його своєму персонажу. Однак мати також запис контролера саме тоді, коли були натиснуті значні клавіші (наприклад, стрілки, стрибок тощо) та коли вони були відпущені. Він зберігатиме таку інформацію:
actions[0].milliseconds = 400 actions[0].action = right pressed
actions[1].milliseconds = 1000 actions[1].action = jump pressed
actions[2].milliseconds = 1300 actions[2].action = jump released
actions[3].milliseconds = 2500 actions[3].action = jump pressed
actions[4].milliseconds = 3000 actions[4].action = jump released
actions[5].milliseconds = 5330 actions[5].action = right released
Контролер має два режими:
- Запис: одержує введення з клавіатури. Записує вхід у список. Передає введення символів залежно від стану клавіатури.
- Повтор: Ігнорує введення клавіатури. Просувається по списку відповідно до мілісекунд, що минули з початку рівня. Передає введення символів залежно від записаного стану клавіатури в поточний момент.
Персонажі
Коли ваш персонаж об'єкт побудований, він створює для себе свіжий контролер. Характер може бути в одному з двох режимів у будь-який час:
- Активний: Є тільки один активний персонаж, і це той, яким ви керуєте. Коли персонаж знаходиться в активному режимі, його контролер знаходиться в режимі запису. За замовчуванням, коли персонаж побудований, він перебуває в активному режимі.
- Привид: це той, який відтворює ваші минулі дії. Коли персонаж переходить у режим «Привид», він змінює зовнішній вигляд і встановлює свій контролер у режим відтворення.
Рівні
Щойно розпочатий рівень
Коли ви запускаєте рівень, створіть один символ. Тепер рівень починається, і гравець робить свою справу.
Коли час скидається
Коли рівень скидається, виконайте три дії:
- Скажіть поточному активному персонажу, щоб увійти в режим привидів.
- Створіть нового персонажа.
- Зателефонуйте всім персонажам, щоб перезавантажитись. Це поверне їх у вихідне положення без руху і т. Д. Вони, в свою чергу, скажуть своїм контролерам повернутись до мілісекунди 0 без натискання клавіш.
Потім починається рівень, і гравець робить свою справу.