13. Первая 3Д игра. Часть 3 – внешний вид Итак,
движок разработан, что ещё делать программисту? Улучшать внешний вид! Всё
таки игрок будет смотреть и оценивать игру «извне» - т.е. по тому, как она
выглядит, и играется, а не по тому, каким образом там реализована проверка на
столкновения J… Поэтому нельзя недооценивать некоторые мелочи,
которые могут приукрасить вашу игру… что можно сделать сначала? Ну, во
первых, я предлагаю всё разукрасить! (а то чёрно-белое всё как-то примитивно
смотрится…) Делать-то для этого много не надо, а всё равно смотреться будет
круче! Так,
сначала разукрасим игрока зелёным (поставьте эту строчку после создания
игрока):
…затем
кубики красным (эту строчку нужно вставить в цикл создания кубиков):
…и,
наконец, закрасим цилиндр жёлтым…
Во,
теперь куда красочнее всё смотрится! Красный, жёлтый, зелёный… CGA, блин… А? Что такое CGA спрашиваете?.. да – так, молодость вспомнил… нет, это
не светофор J… Если
хотите, конечно, можете подставить свои цвета. Как выбрать себе цвет? Самый
лёгкий способ – зайдите в PaintBrush, затем
в меню Палитра->Изменить Палитру, и нажмите на кнопочку «Определить цвет»,
там такой спектр вылезет, и снизу цифры. Те что слева – как раз те, которые
нужны J! Во-вторых.
Есть такие мелочи, которые очень сильно улучшают внешний вид игры… это
какой-нибудь вид, дополнительный выбор или ещё что-нибудь, что не очень
сложно реализовать, но при этом сильно изменяет игру в лучшую сторону…
Например, в моём проекте про Катапульту это была способность «следить» за
снарядом… Так
вот, сейчас предлагаю внести 2 изменения, во-первых камеру при её создании
поставить чуть пониже, строчку
…заменить на
И
вставить такую ма-а-аленькую строчку кода в главный цикл игры, которая
правда, покажет, что игра всё-таки трёхмерная:
Догадались,
что она будет делать? Она будет следить за нашим шариком, находясь в одной
точке над серединой! Это немного ухудшит вид, зато смотреться сама игра будет
в 2 раза круче J… вот так какая-то строчка может сильно повлиять на
целую игру! Вот,
вроде как и оформили чуть-чуть.. ладно я тут ещё хотел кое-что добавить –
стены, которые будут ограничивать область самой игры (а то раньше забыл
добавить, а сейчас как бы и место как раз есть J). Чтобы
особо не париться, сделаем их того же типа, что и кубики, более того,
предлагаю сделать их из того же массива, что и кубики… Но,
для этого нам надо добавить ещё 4 элемента массива, поэтому:
заменим
на:
Дальше
создадим 4 кубика, которые у нас скоро станут стенами:
Здесь
мы создаём ещё 4 кубика, меняем цвет и задаём тип столкновения… ну, понятно,
короче J… Теперь
расставим их по местам, где они будут стоять:
Но,
кубики-то так кубиками и останутся, поэтому мы должны их расширить! Можно
использовать команду ScaleEntity, но здесь я предлагаю
использовать новую команду – FitMesh! Синтакс:
FitMesh объект, x, y, z, ширина, высота, длина – эта
команда так трансформирует объект, и перемещает его вертексы, что он занимает
ровно отведённый куб, задаваемый этими параметрами… очень полезная команда!
Позволяет вам задать именно такой размер для модели, какой вы хотите,
независимо от того, какой размер модели был до этого… J! Так,
вот для примера, возьмём Walls(30) – который находится слева от нашего игрока (в начале,
во всяком случае J), что нам надо с ним сделать? Пусть в ширине будет 2,
в высоту он будет от –1 до 2 (т.е. выше всех остальных наших объектов), и в
длину – на всё поле + ещё немножко (т.к. кубики у нас расставляются от –40 до
40 – т.е. на дистанции 80, сделаем размер поля равным 100…) – т.е. от –50 до
50. Значит
мы пишем: FitMesh –1,-1,-50,2,3,100 – не забудьте, что последние 3 цифры – не координаты,
а размеры! А
для Walls(33) – который
находится спереди, нам надо сделать ширину от –50 до 50, длину от –1 до 2, а
длину от –1 до 1! И
для неё мы пишем: FitMesh –50,-1,-1,100,3,2 Так
по аналогии все команды:
Вот,
вроде внешний вид и приведён в норму… на выставку она может не попрёт, но для
первой игры очень даже неплохо! Зато я знаю что ваша вторая (ну не вторая,
так третья!) – точно будет намного красочнее и интереснее! (Главное не
забудьте мне прислать мне демку или ссылку на скриншоты J!) Весь код:
|
Оглавление: 0. Введение 5. 2Д в 3Д 7. Родительская зависимость или Привязки 9. Коллизион Детекшн или как устроен мир… 10. Первая 3Д игра. Часть 0 – основы движка 11. Первая 3Д игра. Часть 1 – разработка движка 12. Первая 3Д игра. Часть 2 – устранение багов 13. Первая 3Д игра. Часть 3 – внешний вид 14. Первая 3Д игра. Часть 4 – от массива к спискам 15. Первая 3Д игра. Часть 5 – оптимизация кода 16. Первая 3Д игра. Часть 6 – завершение 17. Выведение |