Перейти к содержимому
Бунтовые биты

Бунтовые биты

  • Дом
  • Новости
  • Путеводители
  • Видео-гиды
  • Примечания к патчу
  • Сообщить о нарушении
  • Переключить форму поиска

Ретро-гаджеты – Учебное руководство по промежуточному программированию

Опубликовано 12/13/2022 К ЧЕРВЬ РИДААА! Без комментариев на Ретро-гаджеты – Учебное руководство по промежуточному программированию
  • Заголовок: Ретро-гаджеты
  • Дата выпуска:
  • Разработчик:
  • Издатель:
Информация о ретро-гаджетах пока неполная. Пожалуйста, помогите нам заполнить детали игры, используя это контактная форма.

В этом уроке я покажу вам, как программировать в Retro Gadgets, создавая 2D-платформер.!

Введение

В этом видео, Я покажу вам, как создать следующие функции:

  • Анимация, основанная на времени
  • Контроллер движения игрока
  • Воспроизвести аудио
  • Столкновение спрайтов
  • Сохранить игру + Автосохранение
  • Механика случайного появления

В этом руководстве я создал разделы для некоторых основных функций., а готовый гаджет вы сможете найти в мастерской! Рекомендую следить вместе с видео, но вы также можете просмотреть код ниже. В основном это руководство по программированию в ретро-гаджетах., однако, если люди планируют использовать код для 2D-платформера, его обязательно нужно обновить.. Я могу вернуться и обновить руководство и проект в будущем..

Если вы нашли это руководство полезным, Буду очень признателен, если вы оцените его и оставите комментарий о том, как я могу улучшить!

Видео

Взаимодействие с чипами

Нам нужно инициализировать каждый добавленный нами чип и настроить его для нашего проекта..

местное видео: VideoChip = gdt.VideoChip0 локальный экранMain: Экран = локальная прошивка gdt.Screen0: ROM = gdt.ROM локальное аудио: AudioChip = локальная память gdt.AudioChip0: FlashMemory = gdt.FlashMemory0 локальная нижняя кнопка: LedButton = gdt.LedButton0 локальная верхняя кнопка: LedButton = gdt.LedButton1 локальная кнопка движения: DPad = gdt.DPad0 screenMain.VideoChip = видео аудио:SetChannelVolume(30, 1)

Импорт ресурсов

Как только мы настроим ПЗУ, мы можем импортировать загруженные нами ресурсы и импортировать встроенные ресурсы, такие как шрифт. ПЗУ означает постоянное запоминающее устройство., и данные, хранящиеся здесь, не могут быть изменены после компиляции..

Вот, например, спрайт-лист. Обратите внимание, что у меня есть спрайты, обращенные вправо, в одном ряду и спрайты, обращенные влево, в другом.. Это облегчит их анимацию позже.. Все ресурсы должны быть помещены в папку импорта, которую можно найти в главном меню..

Фотография размыта, потому что высота спрайтов всего 16 пикселей..

–ресурсы– местный шрифт: SpriteSheet = rom.System.SpriteSheets[“Шрифт по умолчанию”] местный манекен: SpriteSheet = rom.User.SpriteSheets[“dummysprite1.png”] местная монета: SpriteSheet = rom.User.SpriteSheets[“монетспрайт.png”] местный звук монет: AudioSample = rom.User.AudioSamples[“coinsound.wav”]

Переменные игрока и монеты

Настройте переменные, которые будут использоваться игроком и монетой.. У нас есть различные счетчики тиков, чтобы отслеживать время анимации наших игроков., скорость появления монет, и случайное начальное число для позиции монеты.

–переменные контроллера игрока– локальный игрокXPosition: число = 0 местный игрокYPosition: число = 48 местные прыжки: логическое значение = ложное локальное падение: boolean = false локальный playerProfile = {} –true = лицом вправо / false = лицом к левому локальному playerFacingIdle: число = 2 –монеты– локальный isCoinSpawned: логическое значение = ложная локальная позиция монеты: число = 0 местная монетаСпаунер: число = 0 местный тик-счетчик: число = 0 локальный globalTickCount = 0

Сохранение и автосохранение

Для того, чтобы сохранение работало корректно, вам необходимо инициализировать переменные, которые вы хотите сохранить, если сохранение не существует. В противном случае, когда вы попытаетесь использовать эти переменные, они будут равны нулю.

initSave()

следует вызывать сразу после инициализации локальной переменной. Вы можете сохранить только одну таблицу в памяти, а таблицы в LUA работают с ключом -> сопоставление пар значений. Это похоже на словари на других языках, таких как Java..

функция сохранения игры() память:Сохранять(Профиль игрока) завершение функции initSave() локальные данные загрузки = память:Нагрузка() если загрузить данные[“счет”] == ноль, затем профиль игрока[“счет”] = 0 сохранить игру() else playerProfile = loadData end end initSave()

Функция обновления

Хорошей практикой является поддерживать чистоту функции обновления и не писать здесь слишком много логики.. Позвольте другим методам обрабатывать вашу функциональность. Было бы неплохо создать функцию автоматического сохранения, которая будет вызывать сохранение каждый раз. 60 тикает, а не имеет здесь эту логику. 60 тиков примерно равно 1 секунда, когда программа работает на максимальной скорости.

— функция обновления повторяется каждый раз, когда обновляется функция тика() видео:Прозрачный(цвет.черный) плеерконтроллер() spawnCoin() игрокСтолкновение() ничьяScore() приращение тиков() если глобальныйTickCount % 60 == 0 и глобальныйTickCount >= 60 затем сохраните игру() конец конец

Увеличение тиковых счетчиков

–увеличить все тики на 1– функция приращения тиков() тикСчетчик = тикСчетчик + 1 coinSpawner = coinSpawner + 1 globalTickCount = глобальныйTickCount + 1 конец

Ничья

Мы рисуем счет в каждом кадре с помощью собственной функции на случай, если захотим обновить его позже..

функция drawScore() видео:Нарисоватьтекст(век2(2, 2), шрифт, “Счет: “..натянуть веревку(Профиль игрока[“счет”]), цвет.белый, цвет.прозрачный) конец

Контроллер движения + Анимации

Это базовый контроллер, который я сделал для управления анимацией.. Я объясняю весь контроллер в видео. Единственное, что следует отметить, это то, что я не обрабатываю, когда игрок нажимает на DPad, чтобы персонаж исчезал на секунду..

Анимацию, основанную на времени, можно увидеть в том, как мы меняем анимацию персонажа на основе переменной TicketCounter.. 15 тиков примерно равно 1/4 секунды, и в 30 тики мы сбрасываем счетчик, чтобы повторить анимацию. Анимации бега и прыжков состоят из 2 кадры каждый. Хотя анимация бега основана на времени, анимация прыжка зависит от роста игрока в сцене. Это не сработает, если ожидается, что игрок будет прыгать на другие объекты..

функция playerController() если motionButton.X == 0 и motionButton.Y == 0 тогда тикСчетчик = 0 праздный() закончить, если тикСчетчик > 29 тогда тикСчетчик = 0 закончить, если motionButton.X > 0 тогда playerXPosition = playerXPosition + 1 playerFacingIdle = 2 ходить(2) иначе если motionButton.X < 0 тогда playerXPosition = playerXPosition – 1 playerFacingIdle = 3 ходить(3) закончить, если motionButton.Y > 0 и playerYPosition == 48 then jumping = true end if jumping == true then jumpAnimation() elseif падение == true, тогда FallAnimation() конец функции завершения падения анимации() локальная анимацияNum = 4 если игрокYПозиция >= 48 затем падение = ложь прыжки = ложь elseif playerYPosition > 32 тогда анимацияNum = 4 playerYPosition = playerYPosition + 1 elseif playerYPosition >= 24 тогда анимацияNum = 5 playerYPosition = playerYPosition + 1 конец видео:РисоватьСпрайт( век2(игрокXPosition, игрокYПозиция), дурачок, анимацияNum, игрокЛицом в режиме ожидания, цвет.белый, цвет.черный) конечная функция jumpAnimation() локальная анимацияNum = 4 если игрокYПозиция > 32 тогда анимацияNum = 4 playerYPosition = playerYPosition – 1 elseif playerYPosition > 24 тогда анимацияNum = 5 playerYPosition = playerYPosition – 1 elseif playerYPosition <= 24 затем прыжок = ложное падение = истинный конец видео:РисоватьСпрайт( век2(игрокXPosition, игрокYПозиция), дурачок, анимацияNum, игрокЛицом в режиме ожидания, цвет.белый, цвет.черный) завершение функции простоя() видео:РисоватьСпрайт( век2(игрокXPosition, игрокYПозиция), дурачок, 1, игрокЛицом в режиме ожидания, цвет.белый, цвет.черный) завершение функции обхода(направление: число) локальная анимацияNum = 2 если тикСчетчик >= 0 и тикСчетчик < 15 тогда анимацияNum = 2 elseif тикСчетчик >= 15 и тикСчетчик < 30 тогда анимацияNum = 3 конец видео:РисоватьСпрайт( век2(игрокXPosition, игрокYПозиция), дурачок, анимацияNum, направление, цвет.белый, цвет.черный) конец

Случайное появление монет

Вот как мы создаём монету в случайном месте на экране между 1-56. Поскольку наша монета — 8×8 спрайт, мы рисуем монету максимум x = (64-8). Чтобы заставить работать генерацию случайных чисел, нам нужно позвонить в

math.randomseed(глобальныйTickCount)

функция, где globalTickCounter каждый раз является другим числом. Это поколение семян работает аналогично семени мира Minecraft..

Мы также используем переменную coinSpawner, чтобы определить, 180 клещи или примерно 3 прошло несколько секунд до появления новой монеты.

функция spawnCoin() если isCoinSpawned == false и coinSpawner > 180 затем math.randomseed(глобальныйTickCount) coinPosition = math.random(56) isCoinSpawned = true elseif isCoinSpawned == true, тогда видео:РисоватьСпрайт(век2(монетаПозиция, 26), монета, 0, 7, цвет.белый, цвет.прозрачный) конец конец

Столкновение игроков и воспроизведение звука

Проверяем, находится ли левая сторона нашего игрока слева от центра монеты., и правая сторона нашего игрока находится справа от центра монеты. Затем мы проверяем, равен ли рост игрока хотя бы центру монеты.. Поскольку мы статически создаем монеты в точке y = 26, а нижняя часть монеты находится в точке y = 34, мы можем сделать это, проверив, находится ли голова игрока хотя бы на уровне y = 30.

функция playerCollision() если isCoinSpawned == true, тогда –вычислить бокс столкновений– если позиция монеты + 4 >= playerXPosition и coinPosition + 4 <= позиция игрокаX + 16 тогда, если playerYPosition <= 30 затем –взял монету– Профиль игрока[“счет”] = Профиль игрока[“счет”] + 1 isCoinSpawned = false coinSpawner = 0 аудио:Играть(звук монеты, 1) конец конец конец конец

Это все, чем мы делимся сегодня для этого. Ретро-гаджеты гид. Это руководство было первоначально создано и написано ЧЕРВЬ РИДААА!. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.

Если вы считаете, что какой-либо контент на этом сайте нарушает ваши права, включая ваши права интеллектуальной собственности, пожалуйста, свяжитесь с нами немедленно, используя нашу контактную форму.
Путеводители Теги:Ретро-гаджеты

Навигация по публикациям

Предыдущий пост: Как исправить падение FPS в ретро-гаджетах, Лаг, и проблемы с заиканием
Следующий пост: Как исправить сбой Chop Goblins, Сбой при запуске, и проблемы с замораживанием

Оставить ответ Отменить ответ

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *

  • Заголовок: Ретро-гаджеты
  • Дата выпуска:
  • Разработчик:
  • Издатель:
Информация о ретро-гаджетах пока неполная. Пожалуйста, помогите нам заполнить детали игры, используя это контактная форма.

Отказ от ответственности

Весь цитируемый контент взят из соответствующих источников.. Если вы считаете, что мы использовали ваш контент без разрешения, обязательно свяжитесь с нами, и мы отнесемся к этому серьезно.
  • О нас
  • Связаться с нами
  • политика конфиденциальности
  • Условия использования

Авторское право © 2025 Бунтовые биты.

Питаться от Пресс-книга новостей Тема WordPress