На цьому етапі ми повинні додати фізичну зіткнення для землі:
- Відкрийте файл ground.collection.
- Додати новий компонент Object Object до відповідного об'єкту гри. Оскільки наземний скрипт не реагує на зіткнення (вся ця логіка знаходиться в сценарії героя), ми можемо помістити її в будь-який стаціонарний об'єкт гри (об'єкти наземної плитки не стаціонарні, щоб уникнути їх).
- Один хороший кандидат - об'єкт гри "контролер", але ви можете створити для нього окремий об'єкт, якщо хочете. Клацніть правою кнопкою миші об'єкт гри та виберіть «Додати компонент» та оберіть об'єкт зіткнення.
- Додайте форму коробки, клацнувши правою кнопкою миші компонент "Колізійний об'єкт" і вибравши "Додати форму", а потім "Вікно".
- Використовуйте інструмент "Перемістити" та інструмент "Масштаб" (Сценарій ▸ Інструмент переміщення інструменту та сцени ▸ Шкала інструменту), щоб коробка охоплювала всі наземні плитки.
- Встановіть властивість типу об'єкта зіткнення "Статичне", оскільки фізика землі не збирається рухатися.
- Встановіть властивість об'єкта об'єкта зіткнення "геометрія" та маску "героєві".
- Тепер об'єкт зіткнення героя, і це буде реєструвати зіткнення між ними.
- Зберегти файл.
Тепер ви можете спробувати запустити гру (проект ▸ Build and Launch). Жаба повинна працювати на землі, і можна буде перейти з кнопки kbd: [пробіл]. Якщо ви запускаєте гру на мобільному пристрої, ви можете стрибати, натискаючи на екрані.
Щоб зробити життя в жаби світу дещо менш тупим, ми повинні додавати платформи, щоб стрибати.
- Перетягніть файл зображення rock_planks.png з пакета об'єктів у папку level / imagessubs.
- Відкрийте level.atlas та додайте нове зображення до атласу (клацніть правою кнопкою миші корінь у контурі та виберіть Додати зображення).
- Зберегти файл.
- Створіть новий файл об'єкта Game, що називається platform.go, у папці рівня. (Праворуч -
- рівень кліків в Провіднику проекту, а потім виберіть Новий ▸ Ігровий об'єктний файл)
- Додайте компонент Sprite до об'єкту гри (клацніть правою кнопкою миші на корінь в Outlineview і виберіть Add Component, а потім Sprite).
- Встановіть властивість Image для посилання на файл level.atlas і встановіть анімацію за замовчуванням на "rock_planks". Для зручності,
зберегти об'єкти рівня в підпапці "рівень / об'єкти".
- Додайте компонент об'єкта зіткнення в об'єкт ігрової платформи (клацніть правою кнопкою миші корінь у виді схеми та виберіть Додати компонент).
- Обов'язково встановіть тип компонента на "Kinematic", а групу та маску відповідно до "геометрії" та "героя" відповідно
-- platform.script function init(self) self.speed = 540 -- Default speed in pixels/s end function update(self, dt) local pos = go.get_position() if pos.x < -500 then go.delete() end pos.x = pos.x - self.speed * dt go.set_position(pos) end function on_message(self, message_id, message, sender) if message_id == hash("set_speed") then self.speed = message.speed end end
Додайте форму коробки до компонента об'єкта зіткнення.
(Клацніть правою кнопкою миші компоненти в контурі та виберіть «Додати форму», потім виберіть «Вставка»).
Використовуйте інструмент "Перемістити" та інструмент "Масштаб" (Сценарій ▸ Інструмент переміщення інструменту та сцени ▸ Шкала), щоб зробити форму у компоненті об'єкта зіткнення, що охоплює платформу.
Створити файл сценарію platform.script (праворуч -
натисніть в Провіднику проекту, виберіть Новий ▸ Сценарій Файл) і введіть наступний код у файл, а потім збережіть його:
- Просто видаліть платформу, коли вона була знята з правого краю екрана
- Відкрийте platform.go і додайте новий скрипт як компонент (клацніть правою кнопкою миші корінь у виді Outline і виберіть Add Component From File і виберіть platform.script).
- Скопіюйте платформу.go до нового файлу (клацніть правою кнопкою миші файл у Провіднику проекту та виберіть «Копіювати», а потім -
- ще раз натисніть і виберіть Вставити) і зателефонуйте новому файлу platform_long.go.
- Відкрийте файл platform_long.go та додайте другий компонент Sprite (клацніть правою кнопкою миші корінь у виді Outline і виберіть Add Component). Крім того, ви можете скопіювати існуючий Sprite.
- Використовуйте Інструмент переміщення (Сцена ▸ Інструмент переміщення), щоб розмістити компоненти Sprite поруч.
- Використовуйте інструмент "Перемістити" та "Інструмент масштабування", щоб зробити фігуру обкладинкою ObjectComponent Collision обома платформами.
Spawning платформи
Ідея з грою полягає в тому, що вона повинна бути простим нескінченним бігунком. Це означає, що об'єкти ігрової платформи не можуть бути розміщені в колекції в редакторі. Замість цього ми повинні динамічно їх породити:- Відкритий рівень. Колекція.
- Додайте два "фабричні" компоненти до ігрового об'єкта "контролер" (клацніть правою кнопкою миші та виберіть "Додати компонент", потім виберіть "Фабрика").
- Встановіть властивості ідентифікатора компонентів на "platform_factory" і "platform_long_factory".
- Встановіть властивість прототипу "platform_factory" у файл /level/objects/platform.go.
- Встановіть властивість прототипу "platform_long_factory" у файл /level/objects/platform_long.go.
- Зберегти файл.
- Відкрийте файл controller.script, який керує рівнем.
- Змініть скрипт, щоб він містив таке, а потім збережіть файл
-- controller.script
go.property("speed", 360)
local grid = 460
local platform_heights = { 100, 200, 350 }
function init(self)
msg.post("ground/controller#script", "set_speed", { speed = self.speed })
self.gridw = 0
end
function update(self, dt)
self.gridw = self.gridw + self.speed * dt
if self.gridw >= grid then
self.gridw = 0
-- Maybe spawn a platform at random height
if math.random() > 0.2 then
local h = platform_heights[math.random(#platform_heights)]
local f = "#platform_factory"
if math.random() > 0.5 then
f = "#platform_long_factory"
end
local p = factory.create(f, vmath.vector3(1600, h, 0), nil, {}, 0.6)
msg.post(p, "set_speed", { speed = self.speed })
end
end
end
1 - Попередньо визначені значення для позиції Y для створення платформ. 2- Функція update () називається один раз у кожному кадрі, і ми використовуємо це, щоб вирішити, чи створювати регулярні або довгі платформи з певними інтервалами (щоб уникнути дублювання) та висоти. Легко експериментувати з різними алгоритмами нересту для створення різних геймплей.
Запустіть гру (Проект ▸ Створення та запуск).
Вау, це починає перетворюватися на щось (майже) грає ...
Немає коментарів:
Дописати коментар
Kоментарі неуkраїнсьkою видалятимуться