2015/08/08 15:43
Minaiturki postaci na wzór Guilty Gear#68
Miniaturki postaci na wzór gry Guilty Gear, ruszają się zgodnie z postacią, obracają się, itd. na tyle na ile pozwala Mugen.
Na początek trzeba wywołać miniaturki, zrobimy to helperem, najlepiej dodać go do stanu kontrolnego typu [StateDef -2] ale też może być [StateDef -1] czyli tem w pliku CMD.
[StateDef -2]
;--------------------------------------------
;minaiturki postaci na wzor Guilty Gear
;autor = ARMOR_CAGE
;--------------------------------------------
[State -2, Wywolanie miniaturek]
type = helper
trigger1 = numhelper(88888) = 0 && time = 0
helpertype = normal
ID = 88888
stateno = 88888
name = "MiniGG"
postype = back
facing = 1
pos = 0, 0
keyctrl = 0
size.xscale = .5
size.yscale = .5
ownpal = 0
persistent = 1
ignorehitpause = 1
Teraz trzeba dodać resztę kodu, a gdzie to już wasza sprawa, można stworzyć nowy plik specjalnie pod to lub wstawić gdzie indziej, ważne żeby nie wkleić kodu w środek innego stanu.
;--------------------------------------------
[Statedef 88888]
type = S
movetype = I
physics = N
sprpriority = -5
velset = 0,0
ctrl = 0
[State 88888, Obracanie sie miniatur]
type = Turn
trigger1 = parent,facing != facing
ignorehitpause = 1
persistent = 1
[State 0, AssertSpecial]
type = AssertSpecial
trigger1 = 1
flag = noshadow
ignorehitpause = 1
persistent = 1
[State 88888, Ustalanie kolejnosci pozycji]
type = VarSet
trigger1 = time = 0
trigger1 = NumPartner = 0
v = 0
value = 0
[State 88888, Ustalanie kolejnosci pozycji]
type = VarSet
triggerall = time = 0
triggerall = NumPartner = 1
trigger1 = teamside = 1
trigger1 = partner, Pos X <= parent, Pos X
trigger2 = teamside = 2
trigger2 = partner, Pos X > parent, Pos X
v = 0
value = 1
[State 88888, Ustalanie kolejnosci pozycji]
type = VarSet
triggerall = time = 0
triggerall = NumPartner = 1
trigger1 = teamside = 1
trigger1 = partner, Pos X > parent, Pos X
trigger2 = teamside = 2
trigger2 = partner, Pos X <= parent, Pos X
v = 0
value = 2
[State 88888, ustawienie na ekranie dla pojedynczego P1]
type = OffSet
trigger1 = Var(0) = 0
x = IfElse(teamside = 1, -ScreenPos X +20, -ScreenPos X +300)
y = -ScreenPos Y +60
ignorehitpause = 1
persistent = 1
[State 88888, ustawienie na ekranie P1 dla druzyny]
type = OffSet
trigger1 = Var(0) = 1
x = IfElse(teamside = 1, -ScreenPos X +20, -ScreenPos X +300)
y = -ScreenPos Y +60
ignorehitpause = 1
persistent = 1
[State 88888, ustawienie na ekranie P3 dla druzyny]
type = OffSet
trigger1 = Var(0) = 2
x = IfElse(teamside = 1, -ScreenPos X +50, -ScreenPos X +270)
y = -ScreenPos Y +60
ignorehitpause = 1
persistent = 1
[State 88888, NotHitBy]
type = NotHitBy
trigger1 = 1
value = SCA,NA,SA,HA,NP,SP,HP,NT,ST,HT
time = 1
ignorehitpause = 1
persistent = 1
[State 88888, Zmiany animacji]
type = ChangeAnim
trigger1 = selfanimexist(parent,anim)
elem = parent,animelemno(0)
value = parent, anim
[State 88888, Usuwanie miniaturki]
type = Destroyself
trigger1 = !parent,alive
;--------------------------------------------
Wszystko jest raczej opisane.
miniaturki są ułożone tak że jest P1 + P3 vs P4 + P2, jeżeli chcesz zamienić kolejność wystarczy zmienić numery warunków Var(0) przy ustalaniu kolejności z 2 na 1 i odwrotnie z 1 na 2.
można sobie ustawić pozycje na ekranie przy type = OffSet.
miniaturki się obracają dzięki type = Turn który można usunąć jeżeli komuś nie pasuje, lub można dodać dodatkowe założenie które przydaje się dla niektórych dziwnych postaci: trigger1 = time = 0.
jeżeli nie chcesz żeby miniaturki się obracały to też warto pamiętać o specyficznych animacjach 5 i 6 od obrotu, mogą spowodować nieestetyczny przeskok animacji, usunąć to można przez zmodyfikowanie założenia przy ChangeAnim, zamieniając istniejące:
trigger1 = selfanimexist(parent,anim)
na takie:
trigger1 = selfanimexist(parent,anim) && parent,anim != 5 && parent,anim != 6
na sam koniec dodam że miniaturki są usuwane po zabiciu danej postaci, to oczywiście jest dodane od tak jeżeli nie chcecie żeby miniaturki znikały w ogóle, wystarczy wywalić cały wpis type = Destroyself i po sprawie lub tez żeby znikały zawsze kiedy nie toczy się walka, trzeba wpisać trigger1 = RoundState != 2 itd itd...
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.