Polish

Logowanie 

Nowiny z Internetu 

Reklama 

button rpgmakerbutton szowelbutton gamestiabutton tsukurubutton fantasybestarium manganimebutton kyaa

Kto jest on-line 

Odwiedza nas 146 gości oraz 0 użytkowników.

Postać - Bieg do tyłu zamiast odskoku 

Bieg do tyłu zamiast odskoku

biegdotylu 01

Cały przykład opisany jest dla standardowej postaci o nazwie Kung Fu Man (KFM).

Standardowo postacie w Mugenie potrafią biegać do przodu przy np. podwójnym wciśnięciu i trzymaniu klawisza odpowiadającego za chodzenie do przodu, jednak inaczej jest z biegiem w tył, standardowo w Mugenie używany jest tylko odskok. Co jeżeli chcesz, żeby twoja postać biegała też w tył ? Rozwiązanie jest banalnie proste.

W skrócie: wystarczy skopiować stan biegu do przodu, zmienić numer na numer odskoku w tył i zmienić animację.

 

Wywołanie biegu

Postać KFM wywołuje bieg i odskok w pliku CMD za pomocą podanych komend (czyli nazw dla kombinacji klawiszy).

;-| Double Tap |-----------------------------------------------------------
[Command]
name = "FF"     ;Required (do not remove)
command = F, F
time = 10

[Command]
name = "BB"     ;Required (do not remove)
command = B, B
time = 10

....
;-| Hold Dir |--------------------------------------------------------------
[Command]
name = "holdfwd";Required (do not remove)
command = /$F
time = 1

[Command]
name = "holdback";Required (do not remove)
command = /$B
time = 1

....

Do tego postać wywołuje stan za pomocą odpowiedniego przeskoku w stanie kontrolnym [Statedef -1] też w CMD do stanów z mugenowego pliku common1.cns:

;---------------------------------------------------------------------------
;Run Fwd - bieg do przodu
[State -1, Run Fwd]
type = ChangeState
value = 100
trigger1 = command = "FF"
trigger1 = statetype = S
trigger1 = ctrl

;---------------------------------------------------------------------------
;Run Back - bieg do tyłu
[State -1, Run Back]
type = ChangeState
value = 105
trigger1 = command = "BB"
trigger1 = statetype = S
trigger1 = ctrl

Aby postać biegała i odskakiwała w tył musi mieć coś na wzór pokazanych wyżej przeskoków (type = ChangeState). Korzystając ze standardowych stanów z common1.cns zaleca się zachować numery stanów 100 i 105.

 

Stan biegu

Standardowo w pliku common1.cns stan 100 to bieg do przodu a 105 i 106 to odskok. Nie można zmieniać stanu w common1.cns bo zmieni się stan dla wszystkich postaci korzystających z pliku. Należy stworzyć w plikach postaci (w pliku CNS lub ST) nowy stan o tym samym numerze, stan twojej postaci będzie ważniejszy niż ten z common1.cns.

Standardowo bieg do przodu wygląda tak:

; Run forward
[Statedef 100]
type    = S
physics = S
anim = 100
sprpriority = 1

[State 100, 1]
type = VelSet
trigger1 = 1
x = const(velocity.run.fwd.x)

[State 100, 2] ;Prevent run from canceling into walk
type = AssertSpecial
trigger1 = 1
flag = NoWalk

[State 100, 3] ;Prevent from turning
type = AssertSpecial
trigger1 = 1
flag = NoAutoTurn

[State 100, 4]
type = ChangeState
trigger1 = command != "holdfwd"
value = 0

Odskok w tył jest nieco bardziej skomplikowany, składa się z dwóch stanów: wyskoku i lądowania, wygląda tak:

;---------------------------------------------------------------------------
; Hop backwards
[Statedef 105]
type    = A
physics = A
ctrl = 0
anim = 105
sprpriority = 1

[State 105, 1]
type = VelSet
trigger1 = Time = 0
x = const(velocity.run.back.x)
y = const(velocity.run.back.y)

[State 105, 2]
type = CtrlSet
trigger1 = Time = 2
value = 1

[State 105, 3]
type = ChangeState
trigger1 = Vel Y > 0
trigger1 = Pos Y >= 0
value = 106

;---------------------------------------------------------------------------
; Hop backwards (land)
[Statedef 106]
type    = S
physics = S
ctrl = 0
anim = 47

[State 106, 1]
type = VelSet
trigger1 = Time = 0
y = 0

[State 106, 2]
type = PosSet
trigger1 = Time = 0
y = 0

[State 106, 3]
type = MakeDust
trigger1 = Time = 2
pos = 0, 0
spacing = 1

[State 106, 4]
type = VelSet
trigger1 = abs(vel x) < Const(movement.stand.friction.threshold)
x = 0

[State 106, 5]
type = ChangeState
trigger1 = Time = 7
value = 0
ctrl = 1

Wystarczy teraz skopiować bieg do przodu i upodobnić go do odskoku.

;---------------------------------------------------------------------------
; Run backwards
[Statedef 105]
type    = S
physics = S
anim = 105
sprpriority = 1

[State 105, 1]
type = VelSet
trigger1 = 1
x = const(velocity.run.back.x) ;ZMIANA

[State 105, 2] ;Prevent run from canceling into walk
type = AssertSpecial
trigger1 = 1
flag = NoWalk

[State 105, 3] ;Prevent from turning
type = AssertSpecial
trigger1 = 1
flag = NoAutoTurn

[State 105, 4]
type = ChangeState
trigger1 = command != "holdback" ;ZMIANA
value = 0
anim = 5 ;ZMIANA
;---------------------------------------------------------------------------

Teraz pozostaje jedynie dodać nowo powstały stan 105 do jakiegoś pliku ze stanami postaci i utworzyć lub zmodyfikować animację 105 złożoną z odpowiednich spritów.

 

Animacja

W postaci KFM, w pliku AIR, animacje biegu i odskoku wyglądają tak:

; Run forwards
[Begin Action 100]
Clsn2Default:2
  Clsn2[0] = -60, -316, 56, 0
  Clsn2[1] = 4, -364, 56, -316
100,0, 0,0, 5
100,1, 0,0, 5
100,2, 0,0, 5
100,3, 0,0, 5
100,4, 0,0, 5
100,5, 0,0, 5

; Hop backwards
[Begin Action 105]
Clsn2:3
  Clsn2[0] = -36, -376, 56, -224
  Clsn2[1] = 8, -244, 100, -136
  Clsn2[2] = -24, -416, 24, -360
43,0, 0,0, 8
Clsn2:2
  Clsn2[0] = -32, -324, 40, -112
  Clsn2[1] = -20, -376, 24, -324
43,1, 0,0, 4
Clsn2Default:2
  Clsn2[0] = -32, -308, 52, -132
  Clsn2[1] = 0, -360, 40, -308
41,6, 0,0, 4
41,2, 0,0, 4
Clsn2:2
  Clsn2[0] = -32, -324, 40, -112
  Clsn2[1] = -20, -376, 24, -324
41,1, 0,0, -1

Wystarczy skasować animację 105 i zastąpić ją skopiowaną animacją 100 z ustawionym odbiciem poziomym (względem osi Y) czyli parametrem H.

; Run backwards
[Begin Action 105]
Clsn2Default:2
  Clsn2[0] = -60, -316, 56, 0
  Clsn2[1] = 4, -364, 56, -316
100,0, 0,0, 5, H
100,1, 0,0, 5, H
100,2, 0,0, 5, H
100,3, 0,0, 5, H
100,4, 0,0, 5, H
100,5, 0,0, 5, H

biegdotylu 02

 

Dodatkowe wyjaśnienia

const(velocity.run.back.x) - funkcja pobierająca wartości stałych z pliku CNS, w tym wypadku wartość X dla run.back z grupy [Velocity]. Zobacz Lista funkcji dla triggerów.

Zmiana ze stanu 105 do stanu 0 zakończona jest specjalną animacją 5:

[State 105, 4]
type = ChangeState
trigger1 = command != "holdback" ;ZMIANA
value = 0
anim = 5 ;ZMIANA

Animacje 5 i 6 powinna posiadać każda postać, standardowo przedstawiają one obrót postaci stojąc i kucając.

biegdotylu 03

Napisz komentarz w tym Artykule