Если вы хотите сделать актора по размерам превышающего стандартных, или чтоб ваш актор ходил задом на перед - то эта статья для вас! Ну-с, начнём.
Walkpath - часть ini кода, определяющая схему движения конечностей (рук и ног) акторов в разных ситуациях
Пример с описанием
Звёздочками выделены важные моменты.
Code
//это конфиг стандартного робота
StandLimbPath = LimbPath // задаём walkpath (далее w.p.) для положения стоя. для w.p. стояния обычно используется только start offset, который является точкой относительно туловища, в которую будут стремится стопы актора если не нажата ни одна кнопка движения
PresetName = Clone Stand Path // имя w.p.
StartOffset = Vector // "точка отсчёта" для w.p., от этой точки считается движение из блока, под номером, заданом в start seg count
X = 5 // на 5 пикс. правее sprite offset'а *туловища*
Y = 19 // и на 19 пикс. ниже
StartSegCount = 0 // блок, с которого начнётся движение (если 0 или 1 - то с первого)
SlowTravelSpeed = 0.1 // не используется
NormalTravelSpeed = 0.5 // скорость анимации движения
FastTravelSpeed = 1.5 // не используется
PushForce = 4000 // сила ног. слишком маленькие значения не дадут ногам поднять актора, слишком большие будут оставлять дыры в земле
WalkLimbPath = LimbPath // w.p. для ходьбы
PresetName = Robot Walk Path // имя w.p.
StartOffset = Vector // точка отсчёта (от туловища) (является блоком №0 для следующего параметра)
X = 13
Y = -2
StartSegCount = 3 // движение начнется с 3-го блока
// предположим, что наша нога должна описывать круговые движения
// так вот, чтобы при нажатии (первом) кнопки движения (вправо/влево) нога не начинала двигатся с блока №1, в котором, например, задано движение вниз, а с любого другого (например того, в котором движение вправо), используется этот параметр.
AddSegment = Vector // первый блок. в нём задано:
X = 0 // стопа не двигается по оси х
Y = 2 // сдвиг стопы на 2 пикс. вниз *от последнего положения или от start offset, если этот блок первый* (start seg count = 1)
AddSegment = Vector // блок второй
X = 0 // по оси х не двигаемся
Y = 2 // еще 2 пикселя вниз
AddSegment = Vector // тут и далее - аналогично
X = 0
Y = 5
AddSegment = Vector
X = 0
Y = 5
AddSegment = Vector
X = -6
Y = 4
AddSegment = Vector
X = -4
Y = 0
AddSegment = Vector
X = -4
Y = 0
AddSegment = Vector
X = -4
Y = 1
AddSegment = Vector
X = -3
Y = 1
AddSegment = Vector
X = 0
Y = -2
// *после окончания цикла, он повторяется , но начиная уже с первого блока*
SlowTravelSpeed = 1.5 // не используется
NormalTravelSpeed = 2.5 // скорость движения (больше 5 не рекомендуется, актор будет просто месить землю под собой, но быстро)
FastTravelSpeed = 4.5 // не используется
PushForce = 6000 // сила ноги (см. выше)
CrouchLimbPath = LimbPath // новый w.p. - приседание
PresetName = Robot Crouch Path // имя w.p.
StartOffset = Vector // обычно в w.p. приседания используется только start offset, он является точкой (относительно туловища), в которую переместятся стопы в момент нажатия кнопки приседаниия
X = 12 // 12 пикс правее туловища
// значения х >= 0 заставляют актора поджать колени и плюхнутся задницой на землю
// меньше 0 - закинуть ноги за спину (не рекомендуется)
// значения у >= 0 - согнуть ноги
// у <= 0 - не рекомендуется
// такде нет смысла ставить *всем* start offset'ам значения х и у большие чем длина самих конечностей, в этом кик минимум нет смысла.
Y = 0
StartSegCount = 0 // у w.p. без блоков (только start offset) этот параметр должен = 0
SlowTravelSpeed = 0.1 // не используется
NormalTravelSpeed = 0.5 // скорость движения
FastTravelSpeed = 1.5 // не используется
PushForce = 5000 // сила ног
CrawlLimbPath = LimbPath //новый w.p. - ползанье
PresetName = Robot Crawl Path // имя w.p.
StartOffset = Vector // думаю всё понятно из предидущих примеров
X = -12
Y = -8
StartSegCount = 2
AddSegment = Vector
X = 12
Y = 0
AddSegment = Vector
X = 8
Y = 2
AddSegment = Vector
X = 0
Y = 8
AddSegment = Vector
X = 0
Y = 10
SlowTravelSpeed = 1.5
NormalTravelSpeed = 1.8
FastTravelSpeed = 4.5
PushForce = 8000
ArmCrawlLimbPath = LimbPath // w.p. ползания *для рук*
PresetName = Robot Arm Crawl Path // имя w.p.
StartOffset = Vector // точка отсчета относительно sprite offset'а туловища
X = -4 // 4 пикс. левее
Y = -7 // 7 пикс выше
StartSegCount = 2 // начальный блок - второй
AddSegment = Vector // блок №1
X = 0 // *кисть* по оси х не двигается
Y = -4 // *кисть* переместится на 4 пикс. вверх относительно предидущего положения
AddSegment = Vector // аналогично
X = 3
Y = -3
AddSegment = Vector
X = 4
Y = 0
AddSegment = Vector
X = 4
Y = 4
AddSegment = Vector
X = 0
Y = 10
SlowTravelSpeed = 1.5 // не исп.
NormalTravelSpeed = 1.5 // скорость движения
FastTravelSpeed = 4.5 // не исп.
PushForce = 6000 // сила рук (так же как и с ногами)
ClimbLimbPath = LimbPath // новый w.p. - лазанье по лестницам ( один для ног и для рук)
PresetName = Robot Climb Path // всё как и везде
StartOffset = Vector
X = 0
Y = -14
StartSegCount = 13
AddSegment = Vector
X = 4
Y = 4
AddSegment = Vector
X = 1
Y = 2
AddSegment = Vector
X = 1
Y = 2
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 1
Y = 1
AddSegment = Vector
X = 0
Y = 1
AddSegment = Vector
X = 0
Y = 3
AddSegment = Vector
X = -2
Y = 5
AddSegment = Vector
X = -4
Y = 5
AddSegment = Vector
X = -6
Y = 5
SlowTravelSpeed = 1.5
NormalTravelSpeed = 1.5
FastTravelSpeed = 4.5
PushForce = 7000
JumpLimbPath = LimbPath // w.p. прыжков (полётов). как перемещаются ноги в полёте.
PresetName = Robot Jump Path // всё как и везде
StartOffset = Vector
X = 0
Y = 8
StartSegCount = 3
AddSegment = Vector
X = 0
Y = -10
AddSegment = Vector
X = 0
Y = 4
AddSegment = Vector
X = 0
Y = 4
AddSegment = Vector
X = -8
Y = 14
SlowTravelSpeed = 3
NormalTravelSpeed = 6
FastTravelSpeed = 7
PushForce = 7000
DislodgeLimbPath = LimbPath // вот тут есть проблемка - полное отсутствие идей на счет назначения этого w.p.
// хотя... единственная зацепка - сами цифры. судя по ним, и цифрам из w.p. полётов, можно предположить, что отличие между этим и w.p. полётов - в направлении: тот - когда лицом вперед - на джетпаке, этот - когда чем-нибудь отшвырнуло.
// а так обычный w.p., всё как и везде
PresetName = Robot Dislodge Path
StartOffset = Vector
X = 2
Y = -10
StartSegCount = 0
AddSegment = Vector
X = 0
Y = 6
SlowTravelSpeed = 1.5
NormalTravelSpeed = 2.5
FastTravelSpeed = 4.5
PushForce = 10000
Прим.№1: "предидущее положение" - точка относительно start offset, к которой прибавятся значения текущего блока
Прим.№2: у крабов w.p. для передних и задних ног разные, и задаются с теми-же названиями что и у гуманоидов, но с добавлением L или R в начале (LStandLimbPath, RWalkLimbPath)
если ничего не понятно - постарайтесь написать что именно, пожалуйста. Вы поспособствуете улучшению статьи.