Видео-туториалы[]
1. Маус-турель
Коды экспрешнов в описании ролика.
Текстовые туториалы:[]
Работа с векторами в expression 2 на примере ракеты:[]
@name VectorFly
@inputs X Y Z Go Const
@outputs Out:vector Mul
Mul = Go*Const
Out = entity():pos() - vec(X,Y,Z)
Разбор кода[]
- @name - название
- @inputs - входы. XYZ - координаты цели, Go - движение, Const - скорость.
- @outputs - выходы, Out:vector - выход с названием "Out" и типом данных "VECTOR".
- Mul = Go*Const - альтернатива Mul = (Go?Const:0), если Go = 1 то Mul = Const
- entity() - возвращает entity самого чипа (об entity читайте ниже)
- entity():pos() - возвращает позицию entity, в данном случае чипа.
- vec(X,Y,Z) - создает новый вектор с заданными значениями
И затем вычитает векторы для получения направления до цели, которое выводится к трастеру(векторному).
Постройка ракеты[]
Расположить и свелдить 2 пропа и кресло как на картинке,
расположить компоненты как на картинке,
(controller - expression2, Wire core - константа, штука со стрелкой - vector thruster) и под контроллер на спинке кресла.
Настройки вектор трастера: Multipler 20000, Mode xyz world. Все остальное по желанию.
Затем приваирить все так[]
Vector Thruster Mul и Vector к Expression2 Mul и Vector.
Expression2 X Y Z к адв под контроллеру (у него тоже есть выходы X Y Z)
Expression2 Go к кнопку пода, Const к константе на сколько-нибудь.
Изменить вес трастера на 3, вес ракеты на 200.
Кликнуть по белой пластине keep upright'ом.
Вроде можно лететь. Ракету можно доработать, например добавить стабилизацию поворота.
Туториал по entity в expression 2:[]
@name EntityInfo
@inputs E:entity
@outputs Type Dist Pos:vector Alive Health
interval(1000)
Pos = E:pos()
Dist = (entity():pos() - Pos):length()
if(E:isPlayer()) {Type = 1} elseif(E:type() == "prop_physics") {Type = 2}
Alive = E:isAlive()
Health = E:health()
Разбор кода[]
- @inputs - входы, E:entity - вход с названием "E" и типом данных "ENTITY" (подключать к target finder)
- @outputs - выходы. Смотреть debugger'ом или подключать к экранам.
- interval(1000) - каждую секунду обновлять данные об объекте.
- E:pos() - координаты объекта в виде вектора.
- Dist = (entity():pos() - Pos):length() - вычисление длинны вектора от чипа до объекта.
- Строка с if - определение типа объекта.
- E:isPlayer() - возвращает 1 если объект - игрок.
- E:type() - возвращает тип объекта в виде строки.
- E:isAlive() - возвращает 1 если объект живой (игрок или НПС)
- E:health() - возвращает здоровье объекта (например у деревянной пластинки 1х1 из PHX 50 здоровья)
Вот пример:
Больше функций для работы с объектами можно найти в документации.