Создание солнечных панелей - от Unity до готового результата.Некоторые начинающие создатели модов для Kerbal Space Program наверняка не раз задавались вопросом: "Как сделать солнечные панели?". Многим это может показаться сложным, но на самом деле если разобраться, все легко и понятно. Итак, давайте рассмотрим основные этапы создания солнечной панели, которая будет автоматически ориентироваться на солнце.
ТеорияВращающая солнечная панель содержит в себе 3 основных элемента:
Не вращающуюся базу, которая располагается неподвижно относительно той детали, к которой она будет прикреплена.
Вращающийся элемент, обеспечивающий ориентацию собственно самой панели на солнце.
Солнечную панель - элемент, непосредственно определяющий попадание на него света.
При необходимости также могут иметься дополнительные детали, которые могут быть необходимы для декора или же для функционала анимации.
Настройка солнечной панели в UnityОбратите внимание на изображение ниже:
[attachment=5689]
Давайте детальнее рассмотрим, что означают представленные в в иерархическом окне элементы:
GameObject - всем знакомый элемент, необходимый для экспорта модели в игру.
Panel - прикрепленная к GameObject 3D модель, содержащая с свою очередь дочерние элементы.
А теперь то, что обеспечивает непосредственную функциональность солнечной панели:
Элемент "
basefoil" - неподвижный элемент, о котором было сказано ранее. Обратите внимание, что к нему ничего не прикреплено. Это сделано для того, чтобы обеспечить потом солнечную панель анимацией раскрытия. Но по необходимости основные детали можно сделать его дочерними объектами.
Элемент "
solarPivot" - вращающийся объект, который обеспечит нам ориентацию панели. На изображении он представлен в виде стержня, помеченного зелеными линиями. О его настройке данного объекта будет сказано ниже.
Элемент "
suncatcher" - определяет наличие солнечных лучей. Является одним из дочерних/прадочерних объектов элемента "solarPivot".
Настройка функциональностиДля того чтобы панель могла определять положение на солнце, ее необходимо настроить в соответствие с локальными осями координат. Делается это еще в 3D редакторе.
Важно!
Локальная
ось Y обеспечивает вращение объекта "solarPivot". На изображении данная ось отмечена зеленой стрелкой, которая проходит вдоль стержня (solarPivot). Следовательно, уже в игре будет обеспечено продольное вращение стержня.
Локальная
ось Z обеспечивает ориентацию объекта "suncatcher" на солнце.
Внимание!!! Это настраивается у объекта "solarPivot" - именно он будет вращаться на солнце.Лицевую сторону вашей панели надо повернуть таким образом, что она соответствовала оси Х объекта "solarPivot" - это мы и можем наблюдать на представленном выше изображении.
ПрочееКак вы могли заметить, в иерархическом дереве имеются прочие объекты. Они не имеют отношения к функциональности, а необходимы мне лишь для анимации раскрытия солнечной панели.
Настройка файла part.cfgВ конфигурации солнечной панели присутствует модуль "ModuleDeployableSolarPanel". Именно он отвечает за работоспособность панели именно как солнечной панели - обеспечивает поворот, раскрытие, а также ориентацию на солнце, и что самое важное - генерацию электричества.
Ниже представлен данный модуль:
MODULE
{
name = ModuleDeployableSolarPanel
sunTracking = true
raycastTransformName = suncatcher
pivotName = solarPivot
isBreakable = false
resourceName = ElectricCharge
chargeRate = 0.75
powerCurve
{
key = 206000000000 0 0 0
key = 13599840256 1 0 0
key = 68773560320 0.5 0 0
key = 0 10 0 0
}
}
Давайте рассмотрим его содержание:
sunTracking = true - если стоит true - панель будет ориентироваться на солнце.
raycastTransformName = suncatcher - suncatcher - имя объекта из Unity, который обозначает саму панель.
pivotName = solarPivot - тоже имя объекта, обеспечивающего ориентацию.
Проследите чтобы у вас эти имена совпадали!
isBreakable = true - при true панель будет ломаться в экстремальных условиях - вхождении в атмосферу или ударах. Важно - ломаться будет все объекты, которые в Unity были прикреплены к "solarPivot".
chargeRate = 0.75 - количество генерируемого электричества при 100% освещенности на высоте орбиты Кербина. Как известно, чем дальше панель от солнца, тем меньше электричества она производит, и наоборот.
РезультатИ вот, готовая солнечная панель в действии:
[attachment=5691]
А вот пример сломанной панели. Как видно, все дочерние объекты "solarPivot" оторвало:
[attachment=5692]
Анимация развертывания панели.
Для того чтобы ваша модель могла складываться и раскладываться в нужном положении, не нужно изобретать ничего нового. Достаточно лишь создать соответствующую анимацию. Тут все довольно просто. Но стоит обратить внимание, что надо сконфигурировать панель так, чтобы она была в закрытом состоянии, а затем создать анимацию раскрытия, а не наоборот. Тут все просто:
В Unity жмем на GameObject, затем нажимаем сочетание клавиш Ctrl-6 - появится окно анимации.
Создаем анимацию, запоминаем ее название.
Из нижнего окна Unity перетаскиваем созданный файл анимации на нашу 3D модель. Убираем галочки автоматического воспроизведения на GameObject, а также на 3D модели, а потом жмем экспорт.
Идем в файл part.cfg.
Ниже строки
name = ModuleDeployableSolarPanel добавляем это:
animationName = solarpanel где solarpanel в моем случае является именем анимации.
А вот примеры космического корабля с данными анимированными солнечными панелями:
[attachment=5721]
[attachment=5722]
Сообщение отредактировал 7 января 2014 - 16:45
КСП на джойстике это извращенное злодейство...