Polish

Zaloguj się / Zarejestruj się 

Witaj. Zarejestruj się jeżeli nie posiadasz jeszcze konta.

Nazwa użytkownika: Hasło: Zapamiętaj mnie

emo TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja?

TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja? 

2015/09/06 09:44 Jak zrobić przełączany tryb ziemia/lewitacja? #108
Chcę zrobić postać do mugena, która po wciśnięciu :dir_U: będzie lewitować, gdzie hitbox jest wyżej i są inne ruchy, ale nie można wznieść się wyżej ani blokować, a wyjść z niego można tylko po powrocie do "trybu naziemnego" ( :dir_D: ).
Ostatnio zmieniany: 2017/03/13 19:49 przez ARMOR_CAGE.
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.

TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja? 

2015/09/06 10:30 Jak zrobić przełączany tryb ziemia/lewitacja? #109
Ale wejść do tego trybu chcesz po wciśnięciu kierunku: góra ? i wracać po wciśnięciu: dół ? I jak to ma działać potem, np. przy wciśnięciu znowu góra, itd.?
Bo standardowo latanie robi się np. tak że przechodzisz do jakiegoś stanu gdzie podnosisz się wyżej i ustawiasz jakiegoś Vara na 1, zmieniasz różne stany z common1.cns (umieszczasz je w swojej postaci żeby je nadpisać) które dotyczą spadania, podskoków, chodzenia, itd. pod względem tego Vara tzn. przykładowo stan spadania zostaje zatrzymany od razu i postać przenosi się od razu do stanu np. lewitacji. Ale przy lataniu często używa się unoszenia wyżej/niżej kierunkami góra/dół.
Więc poproszę o więcej informacji jak to ma działać.
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.

TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja? 

2015/09/06 16:37 Jak zrobić przełączany tryb ziemia/lewitacja? #110

ARMOR_CAGE napisał:#109
Ale wejść do tego trybu chcesz po wciśnięciu kierunku: góra ? i wracać po wciśnięciu: dół ? I jak to ma działać potem, np. przy wciśnięciu znowu góra, itd.?
Bo standardowo latanie robi się np. tak że przechodzisz do jakiegoś stanu gdzie podnosisz się wyżej i ustawiasz jakiegoś Vara na 1, zmieniasz różne stany z common1.cns (umieszczasz je w swojej postaci żeby je nadpisać) które dotyczą spadania, podskoków, chodzenia, itd. pod względem tego Vara tzn. przykładowo stan spadania zostaje zatrzymany od razu i postać przenosi się od razu do stanu np. lewitacji. Ale przy lataniu często używa się unoszenia wyżej/niżej kierunkami góra/dół.
Więc poproszę o więcej informacji jak to ma działać.
To ma działać tak, że raz zostanie naciśnięta góra, i po krótkiej animacji postać np. Skull Kid "lata" ok. 2 metry nad podłogą, ale nie może wznieść się wyżej, bo podczas lewitacji :dir_U: nie działa. Wtedy hitbox nie będzie dotykał podłogi a postać będzie bardziej podatna na obrażenia (nie może unikać w powietrzu). Będą trzy sposoby na powrót na twardy grunt. Pierwszy to nacisnąć :dir_D: , drugi to zostać znokautowanym (nie trzeba stracić całego zdrowia, wystarczy dostać takie obrażenia, że stracimy kontrolę nad postacią), a trzeci to wyzerowanie paska mocy. Dodam też, że lewitacja będzie powoli zżerać ową moc , i jak się ona skończy, to nastąpi specjalna animacja, i postać spadnie, otrzymując niewielkie obrażenia.
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.

TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja? 

2015/09/06 22:27 Jak zrobić przełączany tryb ziemia/lewitacja? #111
No to tak wstępnie zrobiłem ci coś takiego.
Użyj KFMa.
W pliku :txt2: CMD dodaj na końcu:
;------------ DODANE ------------
[State -1, PowerAdd] ;spadanie mocy przy lewitacji
type = PowerAdd
trigger1 = Var(9) = 1
value = -1

[State -1, ChangeState] ;spadanie na ziemię przy Power <= 0
type = ChangeState
trigger1 = Power <= 0 && Var(9) = 1
value = 50
ctrl = 1

[State -1, VarSet] ;kasowanie Var(9) przy jakimś upadku
type = VarSet
trigger1 = Pos Y >= 0 && Var(9) = 1
v = 9
value = 0

Dodaj stan 999 do :txt2: kfm.cns
;---------------------------------------------------------------------------
; Lewitacja
[Statedef 999, lewitacja]
type = A
ctrl = 0
anim = 40
movetype = I
physics = N

[State 999, VelSet]
type = VelSet
trigger1 = time = 0;Pos Y > -50
x = 0
y = -5

[State 999, VelSet]
type = VelSet
trigger1 = Pos Y <= -50
x = 0
y = 0 

[State 999, VarSet]
type = VarSet
trigger1 = Pos Y <= -50 && Var(9) = 0
v = 9
value = 1

[State 999, ChangeState]
type = ChangeState
trigger1 = Pos Y <= -50; && Var(9) = 0
value = 0
ctrl = 1
;---------------------------------------------------------------------------

Dodaj też zmienione stany z :txt2: common1.cns do :txt2: kfm.cns lub zmień je w commonie jeżeli używasz sam zmienionego pliku.
;---------------------------------------------------------------------------
; Stand to Crouch
[Statedef 10]
type    = C
physics = C
anim = 10

[State 10, 1]
type = VelMul
trigger1 = Time = 0
x = .75

[State 10, 2] ;Stop moving if low velocity
type = VelSet
trigger1 = abs(vel x) < Const(movement.crouch.friction.threshold)
x = 0

[State 10, 3]
type = ChangeState
trigger1 = AnimTime = 0
value = 11

;============== DODANE ==========
[State 10, 4] ;opadanie przy kucaniu
type = ChangeState
trigger1 = Time = 0 && Var(9) = 1
value = 50
ctrl = 1

;---------------------------------------------------------------------------

; Jump Start
[Statedef 40]
type    = S
physics = S
anim = 40
ctrl = 0
sprpriority = 1
facep2 = 1

;[State 40, 1]
;type = VarSet
;trigger1 = Time = 0
;sysvar(1) = 0
;
;[State 40, 2]
;type = VarSet
;trigger1 = command = "holdfwd"
;sysvar(1) = 1
;
;[State 40, 3]
;type = VarSet
;trigger1 = command = "holdback"
;sysvar(1) = -1
;
;[State 40, 4]
;type = VelSet
;trigger1 = AnimTime = 0
;x = ifelse(sysvar(1)=0, const(velocity.jump.neu.x), ifelse(sysvar(1)=1, const(velocity.jump.fwd.x), const(velocity.jump.back.x)))
;y = const(velocity.jump.y)
;
;[State 40, 5]
;type = VelSet
;trigger1 = AnimTime = 0
;trigger1 = prevstateno = 100 ;RUN_FWD
;trigger1 = sysvar(1) = 1
;x = const(velocity.runjump.fwd.x)
;
;[State 40, 6]
;type = ChangeState
;trigger1 = AnimTime = 0
;value = 50
;ctrl = 1

;============== DODANE ==========
[State 40, 7] ;chodzenie jeżeli nie można lewitować
type = ChangeState
trigger1 = Time = 0 && Var(9) = 1
trigger2 = Power <= 0
value = 0
ctrl = 1

[State 40, 8] ;lewitacja zamiast podskoku
type = ChangeState
trigger1 = Time = 0 && Var(9) = 0
trigger1 = Power > 0
value = 999
ctrl = 0

;---------------------------------------------------------------------------

; AirJump Start
[Statedef 45]
type    = A
physics = N
ctrl = 0
velset = 0,0

;[State 45, 1]
;type = ChangeAnim
;trigger1 = SelfAnimExist(44)
;value = 44
;
;[State 45, 2]
;type = ChangeAnim
;trigger1 = !SelfAnimExist(44)
;value = 41
;
;[State 45, 3]
;type = VarSet
;trigger1 = Time = 0
;sysvar(1) = 0
;
;[State 45, 4]
;type = VarSet
;trigger1 = command = "holdfwd"
;sysvar(1) = 1
;
;[State 45, 5]
;type = VarSet
;trigger1 = command = "holdback"
;sysvar(1) = -1
;
;[State 45, 6]
;type = VelSet
;trigger1 = Time = 2
;x = ifelse(sysvar(1)=0, const(velocity.airjump.neu.x), ifelse(sysvar(1)=1, const(velocity.airjump.fwd.x), const(velocity.airjump.back.x)))
;y = const(velocity.airjump.y)
;
;[State 45, 7]
;type = ChangeState
;trigger1 = Time = 2
;value = 50
;ctrl = 1

;============== DODANE ==========
[State 45, 7] ;chodzenie jeżeli nie można lewitować
type = ChangeState
trigger1 = Time = 0 && Var(9) = 1
trigger2 = Power <= 0
value = 0
ctrl = 1

[State 45, 8] ;lewitacja zamiast podskoku
type = ChangeState
trigger1 = Time = 0 && Var(9) = 0
trigger1 = Power > 0
value = 999
ctrl = 0

;---------------------------------------------------------------------------

; Jump Up
[Statedef 50]
type    = A
physics = A

[State 50, 1]
type = VarSet
trigger1 = Time = 0
sysvar(1) = 0

[State 50, 2]
type = ChangeAnim
trigger1 = Time = 0
value = ifelse((vel x)=0, 41, ifelse((vel x)>0, 42, 43))

[State 50, 3]
type = ChangeAnim
trigger1 = Vel y > Const720p(-8)
trigger1 = SelfAnimExist(anim + 3)
trigger1 = anim >= 41 && anim <= 43
persistent = 0
value = Anim + 3

;============== DODANE ==========
[State 50, 4] ;kasowanie lewitacji przy opadaniu
type = VarSet
trigger1 = Var(9) = 1
v = 9
value = 0

;---------------------------------------------------------------------------
Ale nie wiem czy to dobry pomysł, pozbywasz się skakania i sterowania tą lewitacją. Tutaj używam Var(9) jako tego vara który określa czy lewitujesz, możesz użyć innego i odnieść się do niego żeby zdefiniować inne ciosy itd.

Tu wstępnie zrobiłem tak że jak postać kuca to opadasz, jak energia się kończy to opadasz, opadasz też jeżeli cios ma fall = 1 i normalnie powoduje upadek po oberwaniu, tak samo jeżeli upadnie z jakiegoś powodu tak jak przy odskoku w KFMie.

Ogólnie jak napisałem jest to taki wstępny kod i jak ci podpasuje należy go dopracować, ja jednak byłbym za czymś na wzór zwykłego latania, jak chesz mogę ci taką alternatywę zrobić.
Ostatnio zmieniany: 2015/09/07 14:37 przez ARMOR_CAGE.
Witaj, zarejestruj się lub zaloguj jeżeli chcesz odpisać w temacie.

emo TEMAT: Jak zrobić przełączany tryb ziemia/lewitacja?