В этом руководстве описывается, как настроить и использовать сценарий программируемого блока Planetary Autopilot Manager..
Базовая настройка / Требования к кораблю
Требования к кораблю
- Блок дистанционного управления, обращенный в нужном направлении вперед.
- По меньшей мере 1 подруливающее устройство вперед, назад, и направление вверх относительно блока дистанционного управления
- По меньшей мере 1 гироскоп (можно разместить как угодно)
- По меньшей мере 1 камера в передней части корабля и сверху направлена вверх, относительно блока дистанционного управления. [Поддержка нескольких камер, рекомендую размещать их близко друг к другу]
- По меньшей мере 1 камера внизу корабля и вверху ориентирована вперед, относительно блока дистанционного управления [Поддержка нескольких камер, рекомендую размещать их близко друг к другу]
Назовите следующие блоки
- Назовите блок удаленного управления так, чтобы оно соответствовало имени nameOfRemoteControl.’ переменная, который “Пульт дистанционного управления” по умолчанию.
- Поместите все передние камеры в группу и сделайте так, чтобы имя группы соответствовало «nameOfHorizontalCameraGroup».’ переменная, который “ПА передние камеры” по умолчанию.
- Поместите все направленные вниз камеры в группу и сделайте так, чтобы имя группы соответствовало «nameOfVerticalCameraGroup».’ переменная, который “PA Нижние камеры” по умолчанию.
При желании эти переменные можно изменить в коде в соответствии с вашими предпочтениями..
Как использовать
После завершения установки вы сможете скомпилировать без ошибок., вот команды, которые вы можете выполнить.
Все команды имеют следующий формат:
<КОМАНДА,ПАРАМЕТР № 1, ПАРАМЕТР № 2 и т. д.…>
ПЕРЕЙТИ К
- Описание – Сообщает автопилоту переместиться в указанное место.
- Команда – ПЕРЕЙТИ К
- Параметр #1 – Информация о путевой точке целевого пункта назначения
- Пример – “ПЕРЕЙТИ К,GPS:КивиНиндзя99 #1:55985.37:16475.92:17445.72:”
- Примечание – При копировании информации о путевой точке из меню GPS, удалите информацию о цвете в конце “#ФФФФФФФ”, см. пример рабочего ввода.
ОСТАНАВЛИВАТЬСЯ
- Описание – останавливает и сбрасывает автопилот
- Команда – ОСТАНАВЛИВАТЬСЯ
TARGET_ELEVATION
- Описание – устанавливает высоту цели, которую необходимо поддерживать во время полета.
- Команда – TARGET_ELEVATION
- Параметр #1 – Высота, которую необходимо поддерживать, в метрах (м).
- Пример – “TARGET_ELEVATION,1000”
- Примечание – Измерение высоты определяется командой ELEVATION_TYPE..
- Примечание – Выше обычно безопаснее & меньше шансов разбиться
ELEVATION_TYPE
- Описание – Определяет, как измеряется текущая высота. (либо с уровня моря, либо с поверхности планеты)
- Команда – ELEVATION_TYPE
- Параметр #1 – “УРОВЕНЬ УПЛОТНЕНИЯ” или “ПОВЕРХНОСТЬ”
- Пример – “ELEVATION_TYPE,УРОВЕНЬ УПЛОТНЕНИЯ”
MAX_SPEED
- Описание – Устанавливает максимальную скорость для автопилота.
- Команда – MAX_SPEED
- Параметр #1 – максимальная скорость, которую нужно установить
- Пример – “MAX_SPEED,75”
- Примечание – Медленнее обычно безопаснее, но было проверено, что он умеренно безопасен на скорости 100 м / с, если высота достаточна. (500м+)
Конфигурация & Советы
Некоторые переменные в классе PlanetaryAutopilotManager можно изменить.. Некоторые из них совместимы со своими собственными функциями получения/установки., другие, вероятно, имеет смысл просто войти и изменить их один раз и покончить с этим.. Здесь я расскажу о плюсах и минусах диапазона значений для каждой переменной, которые я обнаружил во время тестирования..
Я настоятельно рекомендую протестировать ваши корабли с различными вариантами конфигурации в творческом мире, прежде чем использовать их в мире выживания..
максимальная скорость
- Высокие скорости более опасны, поскольку автопилот со временем может выполнять меньше сканирований., это означает, что он с большей вероятностью пропустит препятствие, к которому может приближаться. Однако, если вы настаиваете на скорости, Я рекомендую помещать несколько камер в каждую группу камер. (вперед и вниз) компенсировать.
- Рекомендуемый диапазон: всего за 1 камера в каждой группе, 50-75РС. Добавьте больше камер для большей скорости.
цельElevation
- Рекомендуемый диапазон (300м-1000м)
- Более высокие значения означают, что ваш корабль с меньшей вероятностью столкнется с горой или другим препятствием., что означает меньшую вероятность аварии.
targetElevationTolerance
- Рекомендуемый диапазон (10м-50м)
- Насколько далеко вы примете вертикальное смещение от targetElevation, чтобы не было коррекции. Наличие значительного значения для этого означает, что ваш корабль не будет так часто пытаться исправить себя., и будет просто путешествовать, экономия энергии в пути (особенно если Тип возвышения установлено значение Surface).
ScanDistanceForwardModifier
- Переменная изменяет диапазон сканирования передних камер в поисках препятствий., и начнет лететь вверх (но все равно двигаться вперед) чтобы избежать их.
- Более высокие значения означают более длительное время хедз-апа., но будет сканировать реже. И наоборот для более низких значений.
- Должно быть выше, чем круизныйDistanceModifier
- Рекомендуемый диапазон (1.5ф-2,5ф)
ScanDistanceDownwardModifier
- Переменная изменяет диапазон сканирования нисходящих камер в поисках препятствий., и начнет лететь вверх (но все равно двигаться вперед) чтобы избежать их.
- Более высокие значения означают более длительное время хедз-апа., но будет сканировать реже. И наоборот для более низких значений.
- Должно быть выше, чем круизныйDistanceModifier
- Рекомендуемый диапазон (1.5ф-2,5ф)
круизныйDistanceModifier
- Эта переменная изменяет диапазон, на котором корабль полностью остановится в горизонтальном направлении и взлетит вверх, если обнаруженное препятствие окажется слишком близко..
- Более высокие значения означают большую безопасность, но слишком высокий уровень может выглядеть немного глупо.
- Должно быть как минимум на 0,3f меньше, чем ScanDistanceForwardModifier и должно быть больше 1,1f
- Рекомендуемый диапазон (1.2ф-1,5ф)
имяОфRemoteControl
nameOfHorizontalCameraGroup
nameOfVerticalCameraGroup
- Это названия пультов дистанционного управления и групп камер, которые программа будет искать., не стесняйтесь менять их, если вам не нравятся имена по умолчанию.
Тип возвышения
- Эта переменная определяет, измеряется ли текущая высота от уровня моря планеты или от поверхности..
- Это можно изменить с помощью “SetElevationType” функцию или вручную установив ее, как и другие переменные здесь.
- Уровень моря может обеспечить более плавное, менее тернистый полет (что позволит сэкономить электроэнергию), но вам придется найти хорошее соотношение цены и качества, которое подойдет именно вам.
- Поверхность, вероятно, лучше подходит для работы сразу с места в карьер, если вам лень искать хорошее значение для уровня моря..
Количество камер
- Количество камер в группах передних и нижних камер увеличит количество сканирований и, следовательно, безопасность вашего корабля..
- Однако, Raycast камеры, который используется для сканирования, требует довольно много вычислительных ресурсов., и если вы на многопользовательском сервере, администратору вашего сервера вы можете не очень нравиться. Если это проблема, Я рекомендую использовать как можно меньше камер. (некоторые из моих меньших кораблей прекрасно работают всего лишь 1 камера в каждой группе камер)
Интерфейс сценариев
Эта программа изначально была разработана для совместной работы с другим сценарием, который я планировал., но я решил, что будет лучше сделать это в первую очередь, чтобы иметь прочную основу для работы.. Следовательно, возможно, кому-то из более творческих из вас это подойдет.
Программа по умолчанию (в основном в основном цикле) должен послужить хорошим примером, показывающим, как успешно взаимодействовать с программой..
Чтобы успешно работать, программа требует
- «MyThis = новый MyThis();’ объявлен как поле
- PlanetaryAutopilotManager.Init(GridTerminalСистема, этот, этот реф) в конструкторе программы “Программа() { }”.
- PlanetaryAutopilotManager.Save(этот реф) в функции сохранения программы “общественная пустота Сохранить() { }”
- PlanetaryAutopilotManager.Update(этот, источник обновления) в основной функции программы “общественная пустота Главная(строковый аргумент, UpdateType updateSource)”
Пока эти требования соблюдаются, программа должна работать. Отсюда вы можете взаимодействовать с ним, вызвав эти функции:
*примечание* Везде именованные параметры “MyGridProgram gp” означает, что вы можете просто передать саму программу, используя “этот”.
PlanetaryAutopilotManager.SetDestination(Векторные координаты 3D, MyGridProgram gp)
- Устанавливает целевой пункт назначения и начинает путешествие к пункту назначения..
PlanetaryAutopilotManager.Stop(MyGridProgram gp)
- Останавливает корабль, восстанавливает все двигатели и гироскопы на ручное управление.
PlanetaryAutopilotManager.SetTargetElevation(плавающая цельВысота)
- Устанавливает целевую высоту, которую корабль будет пытаться достичь во время полета..
PlanetaryAutopilotManager.SetElevationType(MyPlanetElevation тип возвышения)
- Устанавливает способ измерения текущей высоты.
- MyPlanetElevation.Sealevel – измерения на уровне моря планеты
- MyPlanetElevation.Surface – измерения с поверхности непосредственно под кораблем
PlanetaryAutopilotManager.SetMaxSpeed(плавающая максимальная скорость)
- Устанавливает максимальную скорость, с которой будет двигаться корабль.
- Не устанавливайте значение выше, чем позволяет сервер.
Как проверить, завершил ли корабль рейс
Есть два способа сделать это
- Проверьте, имеет ли переменная PlanetaryAutopilotManager.destinationIsSet значение False. [если (!PlanetaryAutopilotManager.destinationIsSet)].
- Подпишитесь на событие PlanetaryAutopilotManager.FlightCompleted. (см. OnFlightCompletion() функция в качестве примера)
Это все, чем мы делимся сегодня для этого. Космические инженеры гид. Это руководство было первоначально создано и написано КивиНиндзя99. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.