пятница, 29 июля 2011 г.

Кодинг. Начало.

Автор: Серёжа
 
Итак, для начала немного про движок. Хорош он тем, что в нём:
  • Прописаны основные функции для игр жанра point-and-click (типа, GoTo(x,y) для персонажа)
  • Простенький скриптовый язык, похожий издалека на javascript
  • На официальном форуме сидят люди, готовые помочь =)
Что плохо:
  • Создатель игры (прости, Мнемоник!) рассчитывал, видимо, что в играх подобного жанра надо только ходить, брать и вставлять. Шаг влево, шаг вправо делается с очень большим трудом из-за ограниченности движка. Например, написание любой головоломки становится не менее увлекательной головоломкой для самого программиста.
  • Большая нагрузка на художника. Каждый "фьюк" надо рисовать отдельно, заново. Зато прекрасная практика для Мариночки =)
  Ну чтож, материал для меня какой-то готов, проект создан, надо сделать первую сцену. Только это не будет совсем уж "сценой", потому что на самом деле это - меню. По задумке, при нажатии на некоторые книпки сцена должна переезжать вправо (т.е. камера передвигаться влево), где и будут нужные нам объекты. При переезде камеры для создания эффекта объёмности надо, что бы разные слои двигались с разной скоростью. Слоёв 3:

  1. Задний план (едет медленно, перемещение очень незначительно)
  2. Основной слой (его скорость определяет все остальные)
  3. Надпись (она неподвижна, т.е. будет ехать со скоростью камеры) 


 Всё хорошо и здорово, но вот беда, у объекта "layer" нету функции Scroll, да и вообще ни одной функции перемещения. Более того, средствами GUI никак нельзя прицепить к нему скрипт с новым методом. Выхода, как водится, два:
  1. Уныло. Сделать надпись временно невидимой, чтобы потом она появилась в нужном месте. Остальное, теоретически, должно уметь ездить средствами движка. Однако выглядит это весьма криво и никак нельзя настроить скорость перемещения отдельного слоя. Вообще, процесс этот неконтролируемый и никаких других значений, кроме конечных координат сцены задать нельзя. Уныло.
  2.  Грамотно. Написать этот метод самому. Сначала думал, что этот вариант отпадает, потому что нельзя прицепить к layer'у скрипт, но я ошибался.

    <имя_слоя>.AttachScript("<пусть_к_скрипту>"); // проблема решена

    Новый метод позволит полностью контролировать весь процесс и всё это можно будет использовать в дальнейшем, скажем, для головоломок. Грамотно? Грамотно.
 А вот с реализацией самого метода пока проблемы. Идея и алгоритм простые:
  1. Определить количество Node на слое.
  2. Определить расстояние, которое каждому предстоит пройти
  3. Разбить его на отрезки, которые должен проходит Node за одну миллисекунду
  4. Начать его передвигать......
  5. ...и закончить его передвигать.
Всё очень просто. Пока что сделал первый пункт, остальное завтра, если будет время. А сейчас-пора спать ©

Комментариев нет:

Отправить комментарий