レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
>>809
MoveHitResetというステコンがある
Move系は接触した次のFで1になってPauseTime中ずっと1、PauseTime解けたら2からカウントアップという仕様だから
IgnoreHitPause=1とPersistent=0付けてるならTriggerAll=MoveHit=1に変えるだけで解決できるんじゃないかな
瀕死時限定の技を作りたく、CMDの発動条件に変数を使用しています。
その記述がこちらなのですが
[State -2, VarSet]
type = VarSet
triggerAll = Var(50) = 3
triggerAll = 0.4 >(1.0*(Life)/(LifeMax))
trigger1= Power >= 3000
trigger2= 0.2 >(1.0*(Life)/(LifeMax))
trigger2= Power >= 2000
trigger3= 0.1 >(1.0*(Life)/(LifeMax))
trigger3= Power >= 1000
trigger4= 0.01<(1.0*(Life)/(LifeMax))
var(50) = 4
[State -2, VarSet]
type = VarSet
triggerAll = Var(50) >= 4
trigger1= 0.4 <(1.0*(Life)/(LifeMax))
trigger1= Power < 3000
trigger2= 0.2 <(1.0*(Life)/(LifeMax))
trigger2= Power < 2000
trigger3= 0.1 <(1.0*(Life)/(LifeMax))
trigger3= Power < 1000
var(50) = 3
目指したいのは
「ライフ40%未満で3ゲージある場合」
「ライフ20%未満で2ゲージある場合」
「ライフ10%未満で1ゲージある場合」
「ライフ 1%未満」
……の条件を満たした際に変数を「4」にして
相手のライフが回復する、自分がゲージを消費するなどで条件を満たさなくなった場合には、変数を「3」に戻すという記述です。
ところが、ゲージを消費しても変数が「4」のままであるなどのバグが発生しています。
論理式に隙があるのではないかと思うのですが、どこを直すと良いのでしょうか?
trigger4の不等号が逆だね
修正しました、しかしまだ発生する…
なぜゲージがゼロになってもvar(50)=4のままなのだろうorz
[State -2, VarSet]
type = VarSet
triggerAll = Var(50) >= 4
trigger1= 0.4 <=(1.0*(Life)/(LifeMax));ライフ40%以上ならゲージ無関係に解除
trigger2= Power < 3000;3ゲージ未満なら
trigger2= 0.2 <=(1.0*(Life)/(LifeMax));ライフ20%以上のときのみ解除
trigger3= Power < 2000;2ゲージ未満なら
trigger3= 0.1 <=(1.0*(Life)/(LifeMax));ライフ10%以上のときのみ解除
trigger4= Power < 1000;1ゲージ未満なら
trigger4= 0.01 <=(1.0*(Life)/(LifeMax));ライフ1%以上のときのみ解除
var(50) = 3
目指したい条件見るにこうだと思う
あとはVar被りのチェックかな
直りました!
ありがとうございます!
>>811
movehitresetを使うとmove〜トリガーを使ったキャンセルができなくなるので注意
返事が遅くなってすみません・・・
>>811
>>817
結局使っても上手くいかなかったので、一段ごとにステートを分ける形で連続技としました。
すみませんです・・・
ありがとうございました!
MoveHit = 1に変えてもダメだったの?
あとHitDefは実行した時点での値で処理されるから
コンボ補正用のVarの値が変わる度にHitDef実行し直さないと反映されないよ
まあ解決できたならいいけど
HitDefでD4ヒットエフェクトを使うと画像が小さくならないので
攻撃がヒットしたときにExplodを使ってtrigger1 = movehitで表示させていますが
同じステート内の連続攻撃だと最初の1回目だけしか表示されないです。
多分>>811 さんの言ってることが原因だと思いますが・・・
連続攻撃でD4エフェクトを表示させる良い方法はないでしょうか?
1段目のHitDefのPauseTimeと、1段目と2段目の間隔を考慮してPersistentの値決めればいい
[State ]
Type = Explod
Trigger1 = MoveHit = 1
(略)
IgnoreHitPause = 1
Persistent = 8
こんな感じなら1発目ヒットした次のFでMoveHit = 1が成立してExplod実行されるけど
その後7FはMoveHit = 1が成立していようとExplodは実行されない
8F経過後以降に再度MoveHit = 1を満たしたら(2発目ヒットしたら)Explod実行されてその後7F実行されず
この「実行されない」7Fの間にHitPauseが解けてMoveHitが2以上になれば一度のヒットで複数回実行されることもない
>>821
うおっ、本当にできました!
自分のキャラ製作の問題の壁が1つ消えたぁ〜。ありがとうございます!
AIに相手がくらい状態の時それがあと何フレームあるのかを認識させたいのですがどうすればよろしいでしょうか?
EnemyNear,AnimTime はくらい動作の場合上手く働いてないのでしょうか?それとも私の記述がまずいのかでしょうか?
喰らい動作の長さはHitDef等のHitTimeやSlideTime依存だから相手のAnimTime参照しても意味無いよ
仰け反り(5000とか)と仰け反り戻り(5005とか)に分かれてるし、戻りは最終絵の表示時間を-1にしてるはずだから望みの値返してくれないし
参照するならEnemyNear,GetHitVar(HitTime)とかEnemyNear,GetHitVar(SlideTime)とかだね
>824
>参照するならEnemyNear,GetHitVar(HitTime)とかEnemyNear,GetHitVar(SlideTime)とかだね
目押し(?)コンボ上手くいきました。ありがとうございます。
AI戦をやってみると何故かヒット音はするのにダメージを受けない不具合が多発どうもHitOverrideが他のステートに移ったあとも有効なままなのが原因のようです。
当身ステートを修正してみたのですが相変わらずアーマー同然の状態です。
現在このような形になってます(全部張ると長いので立ち当身のみ)
;5D当身
[Statedef 1100]
type = S
movetype= I
physics = S
juggle = 0
veladd = 0,0
ctrl = 0
anim = 1100
poweradd = 0
sprpriority = 2
[State 1100]
type = HitOverride
trigger1 = (AnimElemTime (5) >= 0) && (AnimElemTime (6) < 0)
attr = SA,AA
slot = 1
stateno = 1103
forceair = 0
[State 1100]
type = HitOverride
trigger1 = (AnimElemTime (5) >= 0) && (AnimElemTime (6) < 0)
attr = SAC,AP
slot = 2
stateno = 1101
forceair = 0
[State 1100, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
timeは省略時1ですからこれで他のステートに HitOverrideが持ち越されることはないはずなんですが。
それだけじゃ何とも言えんね…
試しにTime=1を書いてみるか、AnimElemTime(6)>=0になったらTime=0のHitOverrideで上書きしてみては?
強いて気になる点を挙げればSlot=0は他のところ(常時監視とか)で使ってるのかな?
HitOverrideが怪しいと踏んでるなら片っ端からNullに書き換えてはShift+F4を繰り返して
原因のHitOverrideを特定するのが一番確実だと思う
>826
一通りやってはみたんですが・・。
ん?まてよ?挙動がおかしいときの直後は当身動作してる?もしかしてCMD?
[State -1,6d]
Type = ChangeState
value = 1105
TriggerAll=var(59) = 1;AIスイッチ
TriggerAll=RoundState = 2
TriggerAll=StateType != A
triggerall =Ctrl|(StateNo=11)||(stateno = 1230)||(stateno = 5120)
TriggerAll=EnemyNear,StateType != L
TriggerAll=EnemyNear,MoveType != H
triggerall = p2statetype != A
triggerall = p2stateno = [0,999]
trigger1 = power < 1000
Trigger1=EnemyNear,MoveType=A
Trigger1=Random<=var(58)*20&& Enemynear,Time>=5||(var(58)>9)
Trigger1=P2BodyDist X=[10,150]
trigger2 = power < 1000
Trigger2=EnemyNear,MoveType=A
Trigger2=Random<=var(58)*15&& Enemynear,Time>=5||(var(58)>9)
Trigger2=P2BodyDist X=[40,150]
trigger2 = enemynear,vel x > 4
trigger3 = power >= 1000
Trigger3=EnemyNear,MoveType=A
Trigger3=Random<=var(58)*5&& Enemynear,Time>=5||(var(58)>9)
Trigger3=P2BodyDist X=[10,150]
trigger4 = power >= 1000
Trigger4=EnemyNear,MoveType=A
Trigger4=Random<=var(58)*5&& Enemynear,Time>=5||(var(58)>9)
Trigger4=P2BodyDist X=[40,150]
trigger4 = enemynear,vel x > 4
続きです。
[State -1,2d]
Type = ChangeState
value = 1120
TriggerAll=var(59) = 1
TriggerAll=RoundState = 2
TriggerAll=StateType != A
triggerall =Ctrl||(StateNo=11)||(stateno = 5120)
TriggerAll=EnemyNear,StateType != L
TriggerAll=EnemyNear,MoveType != H
triggerall = p2statetype = C
trigger1 = power < 1000
Trigger1=EnemyNear,MoveType=A
Trigger1=Random<=var(58)*25&& Enemynear,Time>=5||(var(58)>9)
Trigger1=P2BodyDist X=[-15,120]
trigger2 = power < 1000
Trigger2=EnemyNear,MoveType=A
Trigger2=Random<=var(58)*20&& Enemynear,Time>=5||(var(58)>9)
Trigger2=P2BodyDist X=[41,150]
trigger2 = enemynear,vel x > 4
trigger3 = power >= 1000
Trigger3=EnemyNear,MoveType=A
Trigger3=Random<=var(58)*5&& Enemynear,Time>=5||(var(58)>9)
Trigger3=P2BodyDist X=[-15,120]
trigger4 = power >= 1000
Trigger4=EnemyNear,MoveType=A
Trigger4=Random<=var(58)*5&& Enemynear,Time>=5||(var(58)>9)
Trigger4=P2BodyDist X=[41,150]
trigger4 = enemynear,vel x > 4
くらいぬけ?のような動きをしてるときはたいていこの動きなのでこのへんに問題があるのでしょうか?
6dの方の
triggerall =Ctrl|(StateNo=11)||(stateno = 1230)||(stateno = 5120)
|が一つ足りないね、Ctrlの後ろ
あと、1230が何のステートか気になる
ステコンの種類に関わらず原因箇所かどうかの確認法は同じで
怪しいステコンをNullに変えて動作チェックを繰り返せば大抵特定できるよ
複数箇所が原因だとチェックしきれない場合もあるけど
問題解決しました。原因はJ強斬りの
trigger4 = Random <= var(58)*30
trigger4 = p2statetype != A
trigger4 = P2BodyDist X =[-10,63]
trigger4 = P2BodyDist Y =[-22,64]
という記述でここにctrlがないため、浮かせられる→J強斬りステートに移行→おそらく軸位置の都合で即着地。という行動になっていたもようです。
ううむたった一行抜けてのんが原因なのを突き止めるのに10時間以上費やしたぜ・・・・。
ヘルパーにExplodを表示させて、そのヘルパーが消えたときにExplodも消したいんですが
State -2に
type = RemoveExplod
trigger1 = NumHelper(1420) = 0←そのヘルパーが0個の時
ID = 1401←表示させたExplodのID
とやっても消えません。どうすればきえるでしょうか?
常時監視で管理してる範囲が不明だけど、一番簡単なのは
ヘルパーの自殺命令と同じトリガーのRemoveExplodを、ですとろいステコンより上に書くこと
Explodは出したヘルパー自身にしかRemoveExplod実行できないよ
-2でヘルパー数を条件に本体がRemoveExplod使っても無意味
ヘルパーに常時監視ステート読ませることも可能だけど別の問題が絡んでくるから
素直に個別ステートでDestroySelfの上に同じ条件でRemoveExplod書いた方が良い
>>832
条件が同じなら上に書いた奴が優先されるんですか。知らなかったです。
>>833
ヘルパーのRemoveExplodの件はしりませんでした。
そのようにやったらできました!ありがとうございます。
今回、新しくキャラを作りたいと思ったので、
まず、SFFから作ろうと思い、
スプライトをダウンロードしたのですが、
ドット絵の一枚、一枚が全部一つにまとめられていました。
その一つにまとめられている画像からドットを一つずつ抜き出すには、どうしたらいいでしょうか?
何かツール、ソフトが必要でしょうか?
Sprite Databaseというスプライト公開サイトの
ジャンプアルティメットスターズの悟飯を作る予定です。
EDGE等々のドットを描くソフトを使います。
一番簡単(楽とはちがう)なやり方は
1、抜き出したいドット以外を、全部消しゴム等々で消す
2、キャンバスの大きさを、抜き出したいドットがちょうど収まるよう変更する
(しなくても問題ない、SFFが重くなるだけです。軸合わせも大変になるかも。)
3、名前を付けて保存
これを繰り返せばOK!
ドットを描くソフトを使いこなせば、もっと楽にできますよ〜。
たぶん、ジャンプアルティメットスターズのドットだと‥
途中で物足りなさ感じてくるかもしれません。
そんなときは‥
使いこなせるようになったドットを描くソフトを駆使して
ドットをグレードアップさせましょう。
その際は是非、ドット絵板をご利用ください。
ストライカーが上から落ちてきて攻撃する攻撃を作りたいのですがヘルパーを出そうとするとなぜか本体が消えてしまいヘルパーが出てきませんでした
記述は以下の通りです
[Statedef 19003]
type = S
movetype= A
physics = S
juggle = 0
poweradd= 0
velset = 0,0
anim = 99999
ctrl = 0
sprpriority = 0
[State 19003 ヘルパーの呼び出し4]
type = Helper
trigger1 = time = 5
stateno = 20030
ID = 20030
postype = p2
pos = 0,-500
helpertype = normal
name = "20030"
keyctrl = 0
ownpal = 1
[State 19003]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
続きです
[Statedef 20030]
type = S
movetype= A
physics = N
velset = 0,0
ctrl = 0
anim = 20030
sprpriority = 1
[State 20030]
type = VelSet
trigger1 = Anim = 20030
y = 15
[State 20030, 落下中の攻撃判定]
type = HitDef
trigger1 = Anim = 20030
attr = A,SA
hitflag = MAF
guardflag =
affectteam = B
animtype = hard
priority = 7, Hit
damage = 0, 0
pausetime = 0,0
sparkno = -1
sparkxy = 0, 0
hitsound = -1
guardsound = 0,0
ground.slidetime = 0
ground.hittime = 20
guard.hittime = 10
guard.slidetime = 10
air.hittime = 20
guard.ctrltime = 10
ground.velocity = 0,15
air.velocity = 0,15
fall = 1
fall.recover = 0
givepower = 10
persistent = 0
[State 20030]
type = ChangeState
trigger1 = Pos Y >= 0 && Vel Y > 0
value = 20031
ctrl = 0
[Statedef 20031]
type = S
movetype = A
physics = S
anim = 20031
ctrl = 0
movehitpersist = 1
[State 20031, 着地時の攻撃判定]
type = HitDef
trigger1 = time = 0
attr = S,SA
hitflag = MAFD
guardflag =
affectteam = B
animtype = hard
priority = 7, Hit
damage = 100
pausetime = 0,0
sparkno = 0
sparkxy = 0, 0
hitsound = 0,0
guardsound = 0,0
ground.slidetime = 0
ground.hittime = 20
guard.hittime = 10
guard.slidetime = 10
air.hittime = 20
guard.ctrltime = 10
ground.velocity = 0,15
air.velocity = 0,15
fall = 1
fall.recover = 0
givepower = 10
persistent = 0
[State 20031 ヘルパー消滅]
type = DestroySelf
trigger1 = Animtime =0
[State 20031]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
カンフーマンにドット絵を入れてみました。
そしたら、エフェクトは色化けしないのに、
キャラ本体のドットは色化けします。
どうすれば、ちゃんと色化けしないで表示できますか?
教えてください。
>>839
自分で解決しました。
sffはだいたいできたので、sndを作り始めました。
ニコニコ動画や、youtubeの動画の音声をWVAで保存して、音声編集ファイルで
声を取ったのですが、BGMなどが入ってしまいます。
BGMなどを取って、綺麗にする方法はありますか?
SoundEngine Freeという音声編集ソフトで編集しています。
下を参照してください。
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1416627019
>>837
Animは確か4万強(具体的な値は忘れた)よりも大きい値を指定できない
99999を別の番号に振り直してみるといいよ
あとDestroySelfの下にChangeStateあるけど要らない筈だし
下手したらMUGENが強制終了する原因になるから消した方が良い
DestroySelf実行後に同一FでExplodやHelperを実行しちゃうと強制終了だから
0番ステートに最速でExplodやHelperを生成する記述が入っていないのであれば落ちはしないけど
>>843
ありがとうございます!
指摘してくださった部分とは違うところでしたが無事?不具合は直りました
しかし不具合があった部分ですがヘルパーを呼び出すステコンのtrigger1 = time = 0のところのtimeの値を1以上に変えるとヘルパーがでてこないようです
ヘルパーを時間差で呼び出したいのですがどうすればいいでしょうか?
普通ならTime = 5でも呼び出せるからTime=5を待たずして19003を抜けてるんだと思う
1以上にすると出ないなら19003を読み込んだ同一F(若しくは次のFの常時監視)で即座に抜けてるってことになる
ChangeStateの条件がAnimTime=0だからAnim関係の誤作動だろうってことで>>843 のレスしたんだけど、Animは振り直したの?
あとは常時監視のChangeStateやSelfStateが19003を抜ける原因になっていないかもチェックかな
>>845
レスありがとうございます
おかげで原因が分かりました
animのフレーム数を0にしていたので条件を満たす前にステートが移動していたのだと思います
指摘されたところはすべて直しましたのでanimの番号も40000未満に振り直しました
タッグで相手チーム二人に挟まれたときの行動をAIに指定したいのですがトリガーはどうすればよいのでしょうか?
試しに
trigger1 = enemy(0),facing != facing &&enemy(numenemy=2),facing = facing
trigger1 = enemy(numenemy=2),bodydist < 0
と入力したところ2行目がエラーを吐きました。
BodyDist Xだね、XかYを付けないと駄目
あと、NumEnemyは相手本体に加えてHelperType = Playerのヘルパーもカウントするから
=2で指定しちゃうとタッグ相手でも0を返すことがあるし、逆にシングル相手で1を返すこともあるから注意
>BodyDist X
Xを付けてみましたがだめでした。BodyDistはp2専用?
結局
triggerall = enemy(0),movetype != H || enemy(numenemy=2),movetype != H
triggerall = enemy(0),alive=1 && enemy(numenemy=2),alive=1
trigger1 = enemy(0),facing != facing &&enemy(numenemy=2),facing = facing
trigger2 = enemy(0),facing = facing &&enemy(numenemy=2),facing != facing
で概ね行動してくれたました。
AIに学習機能をつけようとしているのですが上手く立ってくれません。
[State -2];学習スイッチonoff
type = varset
trigger1 = 1
var(57) = 1;0 off 1 on
[State -2];地上中段記憶
type = varset
trigger1 = stateno != 131&&(stateno != [152,153]);しゃがみガード以外のくらいステート
trigger1 = var(57) = 1
trigger1 = var(40) = 0
trigger1 = prevstateno = 131||(prevstateno = [152,153]);直前はしゃがみガード
trigger1 = movetype = H
trigger1 = P2Statetype != A
trigger1 = P2Movetype = A
var(40) = p2stateno
ignorehitpause = 1
で変数に代入して
[State -3,しゃがみ解除(ガード切替も兼ねてる)]
Type = ChangeState
value = 0
Ctrl = 1
TriggerAll=RoundState=2
TriggerAll=var(59) = 1
TriggerAll=StateType != A
TriggerAll=StateNo = 11
trigger1 = p2statetype = A
Trigger1 = Random <= var(58)*30
trigger2 = var(59) = 1
trigger2 = var(40) = p2stateno
trigger2 = var(40) > 0
trigger2 = var(59) = 1
trigger2 = var(41) = p2stateno
trigger2 = var(41) > 0
しゃがみ解除ステートと
[State -3,立ちガード]
Type = ChangeState
Value = 120
TriggerAll=var(59) = 1
TriggerAll=StateNo!=[120,155]
TriggerAll=Ctrl||StateNo=11
TriggerAll=inguarddist
TriggerAll=RoundState=2
Trigger1 = Random<=var(58)*60
Trigger2 = P2BodyDist X>90||EnemyNear(var(50)),Time>50
Trigger2 = Random<=var(58)*150
trigger3 = var(40) = p2stateno
trigger3 = var(40) > 0
trigger4 = var(41) = p2stateno
trigger4 = var(41) > 0
たちガードステートにさっきの変数がp2stastenoのときはトリガー入るようにします。
あとはCNSのガードステートを
[State 131, Lo to Hi]
type = ChangeState
Trigger1 = var(59) = 0
Trigger1 = command != "holddown"
Trigger2 = var(59) = 1
Trigger2 = EnemyNear,StateType=A
Trigger2 = Random <= var(58)*30
trigger3 = var(59) = 1
trigger3 = var(40) = p2stateno
trigger3 = var(40) > 0
trigger4 = var(59) = 1
trigger4 = var(41) = p2stateno
trigger4 = var(41) > 0
value = 130
しゃがみから立ちへの変更部分にも手を加えたんんですが立ってくれません?
ごめん、寝ぼけてたw
P2じゃないBodyDistなんて無かったな
Var(41)は2種類目の地上中段ステート記憶ってことでいいのかな?
一つ目のChangeStateのTrigger2下3つはTrigger3の間違いかと
あとは立ちから屈みへのChangeStateも弄っとかないと
高速屈伸や2500loopになるからそっちも手を加えた方がいい
原因はvar(40) = 0の記述がないのが原因だったようです。
[State -2];学習スイッチリセット
type = VarRangeSet
trigger1 = stateno = 191;イントロでリセット
trigger2 = RoundsExisted = 0
trigger2 = TeamMode = Turns
trigger2 = RoundNo > 0
trigger3 = Enemy,RoundsExisted = 0
trigger3 = TeamMode = Turns
value = 0
first = 30
last = 49
の記述追加で立ち中段が滅多に通らなくなりました。
で、次は攻撃失敗の記憶に入ったのですが、もしかしてMoveReversed って当身取られた攻撃の記録に使えなかったりします?
trigger1= MoveReversed=1
trigger1 = stateno = 210
でも
trigger1= MoveReversed=1
trigger1 = prevstateno = 210
でもvaraddが機能していません。-2だから相手にステート奪われても記憶されるはずなんですが?
ReversaldefのP2StateNoでステート移動させられた場合は
移動先のステートにMoveHitPersist=1がついてない限り
MoveReversedを感知する間もなくステート移動とともにリセットされる
MBのシールドみたいにステート奪わないReversaldefなら感知できるんじゃないかな
-2でMoveReversedを感知するためにはReversaldef側がステート奪うタイミングを遅らせるか
奪った先のステートにMoveHitPersist=1をつけるかのどっちかになると思う
突然失礼します。こちらの過去ログを参考にヘルパー式アーマーを作っているのですが、
うまくいきませんでした。どなたか、記述を見て頂けないでしょうか?
[Statedef 1400]
〜中略〜
[state 1400,アーマーヘルパー]
type=helper
triggerall = !ishelper
triggerall = !numhelper(1400)
trigger1 = time = 0
stateno = 1405
name = "komanage_armor"
id = 1405
pos = 0,0
postype = p1
ownpal = 1
keyctrl = 0
ignorehitpause = 1
pausemovetime = 999999
supermovetime = 999999
;ヘルパーアーマー時無敵
[state 1400, 無敵]
type = nothitby
triggerall = !ishelper
triggerall = numhelper(1405)
trigger1= time = 0
value = ,NA,SA,NP,NT
time = 2
ignorehitpause=1
[state 1400, 10分の1食らう]
type = lifeadd
triggerall = !ishelper
triggerall = numhelper(1405)
trigger1 = helper(1405),gethitvar(damage)
value = -ceil(Helper(1405),GetHitVar(damage)*0.1)
absolute = 1
ignorehitpause = 1
[State 1400, 画像の色]
type = PalFX
triggerall = numhelper(1405)
trigger1 = helper(1405),gethitvar(damage)
time = 14
add = 20,150,70
sinadd = 64,32,5,3 ;振幅赤,振幅緑,振幅青,周期
[State 1400, 2]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
;続きです
;アーマー---------------------------------------------------
[statedef 1405]
type=S
movetype=I
[state 1405, push]
type=playerpush
trigger1=ishelper(1405)
value=1
ignorehitpause=1
[state 1405, no shadow]
type=assertspecial
trigger1=ishelper(1405)
flag=invisible
flag2=noshadow
ignorehitpause=1
[state 1405, 本体に追従]
type=bindtoroot
trigger1=ishelper(1405)
ignorehitpause=1
[state 1405, 向きを追従]
type=turn
trigger1=ishelper(1405)
trigger1=facing!=root,facing
ignorehitpause=1
[State 1405, 判定を揃える]
type = ChangeAnim
trigger1 = SelfAnimExist(Parent,Anim)
value = Parent,Anim
elem = Parent,AnimElemNo(0)
[state 1405, 無敵]
type = nothitby
triggerall = numhelper(1405)
triggerall = ishelper(1405)
trigger1 = roundstate!=2
value = ,NA,SA,NP,NT
time = 1
ignorehitpause=1
[state 1405, 攻撃の上書き]
type=hitoverride
trigger1=ishelper(1405)
time=-1
attr=sca,NA,SA,NP,NT
slot=0
stateno=1405
ignorehitpause=1
[state 1405, 親の行動が終わったら消える]
type=destroyself
triggerall=ishelper(1405)
trigger1 = parent,stateno != 1400
どうぞ、宜しくお願いします。
どう上手くいかないのかを(ry
たぶんダメージ処理が正常に行われないってことだと思うけど
GetHitVar系列の大部分はMoveType=Hのときにしか取得できないから
[Statedef 1405]のところをMoveType=Hにしといて、ダメージ処理が済んだら
Trigger1=!GetHitVar(Damage)あたりでStateTypeSetのMoveType=Iにすればいけるかと
アーマー殺しで痛手を負わないようにするならもう一工夫必要だけど
>856
>どううまくいかないのか
すみません、言葉足らずでした。ダメージも入らないんですが、その前にアーマーとして機能していないんです。
普通に食らいモーションを取って、動作が中断してしまいます。デバッグ画面を見たら1405ステートに行かずに5000番台に飛んでいました。
ヘルパーの使い方をよくわかっていないんですが、ヘルパー用のairや食らい判定も必要なのでしょうか?
掲示板を使わせてもらいます。
今、Pinko氏製作の服部半蔵を練習で改変しているのですが、半蔵の勝利ポーズの時間を長くする方法は何かありませんか?
>>857
見落としてた
;ヘルパーアーマー時無敵
[state 1400, 無敵]
type = nothitby
triggerall = !ishelper
triggerall = numhelper(1405)
trigger1= time = 0
value = ,NA,SA,NP,NT
time = 2
ignorehitpause=1
↑これをTime=0でのみ実行してるから3F目以降に無敵が切れてそのまま本体が被弾しちゃう
Trigger1=Time=0をTrigger1=1にするか、1行丸ごと削ってTriggerAllをTrigger1に変更するか
どちらかで無敵を維持すれば大丈夫
>>858
勝利ポーズのステート(大抵のキャラは180番付近)に
[State ]
Type = AssertSpecial
Trigger1 = Time <= ○○
Flag = RoundNotOver
みたいなのがあれば○○の部分の値を増やせばいい
Time = [0,○○]でも同義
なければ自分で追加する
>859を参考に、本体は無敵関係をいじったらできました! アドバイスありがとうございます!
孫ヘルパーで大元(本体)の変数を書き換えるためにはどうすればいいのですか?
ParentVarSetを2回使って子ヘルパーに中継させればいい
孫のParentVarSetで子のVarを書き換えて
そのVarをTriggerに子がParentVarSetで親(本体)のVarを書き換える
孫のMoveTypeがAで子のMoveTypeがHかIであれば問題ないけど、
それ以外の場合は各ヘルパー出現時のメモリ状況によっては書き換えが1F遅れちゃうのがネックだけどね
1Fの誤差も許されないならバグでも持って来ないと不可能
>>863
レスありがとうございます
孫ヘルパーで本体の変数を書き換えたいときには子ヘルパーはもう消した後なんですよね…
孫ヘルパーで本体の変数を書き換える以外の方法を考えてみます
>>862
①条件がそろったときに適当なID(ここではX)でhelperかexplodを孫に実行させる。持続は2Fぐらいで良い。
②-2か-3ステートで、numhelper(X)かnumexplod(X)をトリガーにして親がvarsetを実行する。
変則的ではありますが、これでもいけると思います。
注意としては、
①のとき、numhelper(X)=0かnumexplod(X)=0を必ずtriggerallに入れること
②が常時監視なので、triggerで条件付けをしっかり行うこと
helperやexplodが最大表示数に達していると機能しない
などがあります。
>>865
レスありがとうございます
その方法を試してみます!
自分だけだと思うのですが、何かヒントを下さい
トレーニングモードではCボタン攻撃可能、
アーケードとかVSモードだとCボタン攻撃が出来なくなります
こういった場合、どこを見直せばいいんでしょうか?
ダッシュ攻撃は出せます
;立ち強
[State -1]
type = ChangeState
value = 220
triggerall = command = "c"
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = stateno = [200,210]
trigger2 = movecontact
;立ち強2
[State -1]
type = ChangeState
value = 225
triggerall = command = "c"
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = stateno = [200,220]
trigger2 = movecontact
;ダッシュ攻撃
[State -1]
type = ChangeState
value = 260
triggerall = command = "c"
triggerall = command != "holddown"
triggerall = statetype != A
trigger1 = stateno = 100 && time > 4
trigger2 = stateno = 101 && time <= 3
>>867
デバッグモードで見直してたら何故か700番代に飛んでました
もうちょっとやってみる事にします。すみませんでした
Explodのトリガーをtime%5=0にして5フレームごとに出そうと思ったのですがExplodが最初の一個しかでません
どうすればいいのでしょうか?
Trigger1 = Time%5 = 0だけでExplod実行してるなら
そのステートにいてPause等がかかっていない限り5F毎に出る筈だよ
・Time%5=0以外にトリガー設定してるかどうか
・Persistentを設定してるかどうか
・Time=5になる前にChangeState等でそのステートを離れてないか
この辺を確認されたし
>>870
もう一度確認したらPersistentが紛れ込んでいましたorz
なぜこんな初歩的なミスを…
ありがとうございました!
特定の技で相手キャラを倒したときに、相手キャラの位置にエフェクトを出したいのですがどういうトリガーにすればいいでしょうか?
「勝った時に」ではなく「倒したときに」という条件と、タッグ戦でエフェクトが出る位置で悩んでます。(postypeがp2だとp4には影響しないため)
特定の技だったらHitDefにID設定して
その技のステート内に
[State ]
Type = Explod
Trigger1 = Enemy(0),GetHitVar(ChainID) = ○○
Trigger1 = Enemy(0),Alive = 0
Anim = △△
PosType = Left
Pos = (Enemy(0),ScreenPos x),(Enemy(0),ScreenPos y)
IgnoreHitPause = 1
Persistent = 0
[State ]
Type = Explod
Trigger1 = Enemy(0),NumPartner
Trigger1 = Enemy(1),GetHitVar(ChainID) = ○○
Trigger1 = Enemy(1),Alive = 0
Anim = △△
PosType = Left
Pos = (Enemy(1),ScreenPos x),(Enemy(1),ScreenPos y)
IgnoreHitPause = 1
Persistent = 0
でできるんじゃない?
ChainID設定すると都合が悪い場合はFall.EnvShake.Phaseあたりでも代用可
>>873
慣れない記述が多くて解読するのに結構時間かかりましたが、その記述を入れたらできました。
自分のキャラはコンボがメインなのでFall.EnvShake.Phaseを使ったらできました。
今まではターゲットIDを使ってたのでステート奪った相手にしかできませんでした。
本当にありがとうございます。
すみません、初歩的な質問かもしれません。
相手がくらい中にヘルパーの攻撃を当てると普通に当てた時より威力が下がってしまいます。
コンボ補正はいっさいつけてないのになぜでしょう?
それともどこかCNSで見落としてる可能性があるんでしょうか
SuperPauseを使っているかどうか
相手がDefenceMulSetを使っているかどうか
Trip属性の技を当てた後の話かどうか
喰らい中か否かでダメージが変わるとしたらこの辺りが怪しい
SuperPauseつかってました。
調べたら超必殺補正というのがでてきました。こんなのしらなかったです。
ありがとうございました。
ReversalDefってHitOverRideみたいに複数使い分けることってできませんか?
相手のステートを奪いつつ、相手の攻撃の種類によって自分のアニメを変えたいのですが上手くいきません。
Helper重ねてReversalDef分担させるか、EnemyNear,HitDefAttrを使って条件分岐させるか
前者はヘルパー最大数に達していなければ確実、後者は相手がタッグ等でなければ大体おk
HitDefAttrを数値に変換してEnemy(0)とEnemy(1)を個別にVar格納すればタッグでも滅多に不都合はないと思う
続けてすみません、ヘルパーがReversalDef成功したときに本体のステート変更ってできるんですか?
ヘルパーがReversalDef成功したかどうかはHelper(***),NumTargetで本体側から判別可能だから
それを条件にChangeStateすればおk
そのヘルパーにHitDef実行させている場合はタゲの有無だけじゃ判別できないけど
特定の当身技の補佐として一時的に召喚するヘルパーであれば大丈夫な筈
Targetって自分が攻撃当てた時につけるばんごうでしたよね
要するに当て身成功したときにターゲット番号振って、その番号で判別するんですか?
ちょっと記述の書き方悩んでます。すいません・・・
NumTargetってターゲット奪った相手のこともいうんですね!解決しました
丁寧にありがとうございました。
ガンマレイのように画面端まで届く攻撃判定を持った、
複数回攻撃が当たる技について質問なんですが・・・。
判定は出ていても攻撃が5ヒットを超えた段階で、相手はダウンする
(攻撃が当たらなくなる)ように設定していたんですが、ごく稀に
ヒット制限や想定している攻撃力・補正を逸脱してダメージを与えることが
あります。どなたか、原因に見当がつく方がいらっしゃいましたら、教えて
頂けないでしょうか?
問題の技のhitdef記述は以下の通りです。
[State 3000,判定1]
type = HitDef
triggerall = HitCount < 5
trigger1 = animelem = 4
trigger2 = animelem = 5
trigger3 = animelem = 6
trigger4 = animelem = 7
trigger5 = animelem = 8
trigger6 = animelem = 9
trigger7 = animelem = 10
trigger8 = animelem = 11
trigger9 = animelem = 12
trigger10 = animelem = 13
trigger11 = animelem = 14
trigger12 = animelem = 15
trigger13 = animelem = 16
trigger14 = animelem = 17
attr = S, HP
hitflag = MAFDP
guardflag = MA
damage = ceil(70*fvar(0)*fvar(1)), ceil(10*fvar(0)*fvar(1))
animtype = Hard
air.animtype = Back
ground.type = High
priority = 6, Hit
pausetime = 0, 2
getpower = 0, 0
ground.slidetime = 20
ground.hittime = 20
guard.hittime = 20
ground.velocity = -1,-1
guard.velocity = -6
air.velocity = -0.5,0
airguard.velocity = -0.5,0
ground.cornerpush.veloff= 0
air.cornerpush.veloff = 0
down.cornerpush.veloff = 0
guard.cornerpush.veloff = 0
airguard.cornerpush.veloff = 0
palfx.time = 200
palfx.mul = 80, 200, 80
palfx.sinadd = 5,80,5,40
sparkno = -1
guard.sparkno = -1
sparkxy = 150,-60
hitsound = S3000, 2
guardsound = S120, 0
fall = 1 ;1だと自動立ち直りなし
fall.recover = 0 ;0だと受身不可能
fall.recovertime= 999999
air.fall = 1 ;1だと自動立ち直りなし
それ見る限りだと問題無いけど、
可能性としてはHitCountがリセットされてる(=タゲが外れてる)んじゃないかな
作者によってはCanRecoverフラグ無視して復帰ステートに飛ばしてたりするからそこで外れてるとか
特定の相手キャラでのみ発生するの?
それが原因ならステート奪うかHitDefの上にTrigger1=1で常時ReversalDefかけて永タゲ使うかで解決できると思う
もし違ったらそのステート内の他のステコンや常時監視を見ないと分からない
>885
回答ありがとうございます。
私のキャラが動画でやらかしてたのを見て、慌ててチェックをしているので、まだ特定の相手かどうかはわかりませんが・・・。
ご指摘の復帰ステートの件、該当の動画を見返して気がついたのですが、地面近くで変な食らい方しているんですよね。
fallフラグを無視した復帰の他に、クイックスタンディング等でダウン拒否してまだ残っている判定に引っかかるという可能性は
ありますでしょうか?
↓該当動画、9:10くらいから、ビオレンテの放射樹液が間桐桜に不自然な大ダメージを与えてます。ヒットカウントも8行ってます。
ttp://www.nicovideo.jp/watch/sm16535862
動画見てもよく分からんけど、ヒットカウントが継続してるからタゲ外れてる訳ではなさそうかな
初弾で2ヒット入ってるように見えるから相手側の不可視ヘルパーと本体で1度に2回当たってるんじゃない?
不可視ヘルパー重ねるのはアーマー処理でも使う手法だから本体の無敵設定し忘れてそうなってるのかも
HitCountは同一HitDefでの同時ヒットを1回とカウントするから4回×2ヒットした後にTriggerAll満たさなくなるから計8ヒットで理に適ってる
UniqHitCountなら同時ヒットも個別にカウントするから2回×2ヒットで満たさなくなる
5ヒットを超えた段階で当たらなくするなら等号を付けて「<=5」にするか「<6」にしないといけない
わかりました。では、ヒットカウントは気にしなくても良いということですね。
ダメージがおかしなことになる方法の修正は・・・すみません、「HitDefの上にTrigger1=1で常時ReversalDefかけて永タゲ」が
ちょっとよくわからないです・・・。「ステート奪う」の方はわかりますが、できれば他のビーム系超必殺技を持っているキャラ
と同じく、通常の処理でなんとかしたいと考えております。
この現象が回避できるなら、この際ヒット制限は撤廃して、ダメージ×14ヒットで現在と同等の火力に調整し直してもいいと思っているんですが・・・。
triggerall = HitCount < 5を抜いて、ヒット時は全てのhitdefが当たるようにしておけば、よっぽど変な食らいぬけをされない限りは、
普通の攻撃と同じようにヒットします・・・よね?
間桐桜のcns見ないと分からないけど、ヘルパーによるアーマー処理のダメージと無敵設定ミスにより本体が直接受けたダメージが重複して大ダメージになってるのでは?って話ね。
もしそうならビオレンテ側のcnsどうこうの問題じゃないから>>885 は気にしなくていいし、寧ろ間桐桜の作者に不具合報告した方がいい
本来HitDefによるターゲットは相手のMoveTypeがHじゃなくなったときに解除されるんだけど、ReversalDefを実行し続けることによってターゲットが解除されずに残るのが「永タゲ」
相手がCanRecover無視で復帰してMoveType!=HになってもReversalDefを途切らせなければターゲット解除されずにHitCount継続するからTriggerAllでのヒット数制限が効く
Var使ってもいいならTime=0で0にセットしておいてヒット毎に1加算、そのVarでTriggerAll設定した方が確実
昨日は途中で寝落ちしてしまいました。すみません。
今日帰ってきたらvar追加したりして色々やってみます。また、他のキャラ相手にもこの現象が
起きるか試してみるまで、間桐桜の製作者の方への報告は保留します。桜以外にも起きたら
やはりこっちの問題ですし・・・。結果は後でまた報告に来ます。アドバイスありがとうございました!
>>884 の件ですが、タッグ時で、かつ相手が地面と判定に挟まれるような食らい方をしたときに発生するようです。
(地面の上でビタンビタンと小刻みに跳ねる食らい方をしてました)
ジェダ・cvsベガでも確認できたため、間桐桜の問題ではないようです。
>>889 のvarを使ったやり方も試してみましたが、どうもうまく行きませんでした。
現在、ヒットカウントが途中でリセットされて過剰に食らっている可能性を考慮して、ヒット制限を解除して全判定が普通に命中するように設定し、
ダメージ量をいじって調整しています。
また、保険としてヒット時に地面に近づかないように、各velocityのy値を-1にしています。
これで例の現象が起きなければいいのですが、原因が確定できたわけではないのでいささか不安です。
もし、原因に心当たりがある方がいらっしゃいましたら、教えて頂ければ幸いです。宜しくお願いします。
何とも言えんね…
ダウン追い討ちで問題が出てくるような記述ではないと思うんだけど
Var使って上手くいかないなら>>884 のHitDef以外のところが悪さしてる気がしないでもない
制限解除しても妙な現象が起きるなら常時監視やHitDef以外も見直す必要があるかも
ヒット数制限付きの多段飛び道具ならProjectileでProjHitsとProjMissTime設定すればできるけど
DamageにかけてるFVar(0)やFVar(1)がリアルタイムで反映されないのが難点
イントロでヘルパーをポヨンポヨンさせてparentに近づいたら999193にアニメ変更したいのですが、アニメが999193になると何故か最初の1枚目で止まってしまいます。
[Statedef 999191]
type = A
ctrl = 0
anim = 999191
velset = 1.1,-3
[State 191, 重力]
type = Gravity
trigger1 = time >= 10
[State 191, 地面に着く]
type = velset
trigger1 = pos y >= 0
x = 1
y = -8
[State 191, アニメ変更]
type = changeanim
trigger1 = pos y >= 0
trigger1 = pos x <= 40
value = 999192
[State 191, アニメ変更]
type = changeanim
trigger1 = pos x >= (parent,Pos x)-30
value = 999193
[State 191, 移動終わり]
type = velset
trigger1 = pos x >= (parent,Pos x)
x = 0
y = 0
二つ目のアニメ変更のステコンが原因かも
たぶん条件を満たしたら、自分がどのanimにいようと999193の最初に飛ぶようになってる
triggerall = anim != 999193
って入れてみたら何とかならないかしら?
違ってたらスマヌ
>>894
できました!しかし今度はdestroyselfでヘルパーを消し本体のchangestateでイントロを終了させようとすると
destroyself>一瞬消える>ニュートラル、のような感じになってしまいます
どうすればいいのでしょうか
[Statedef 191];本体ステート
type = A
ctrl = 0
anim = 191
[State 191, 特殊効果];試合が開始するまではこのコントローラを使おう(※2)
type = AssertSpecial
trigger1 = 1
flag = Intro ;イントロの状態
[State 191, カメラ固定]
type = ScreenBound
trigger1 = 1
value = 1
[State 191, ヘルパーを出す]
type = Helper
trigger1 = Time = 0
name = "intro" ;ヘルパーの名前。省略すれば勝手に「(ヘルパーを出した親)'s Helper」という名前になる。
stateno = 999191 ;ヘルパーの最初に向かうステートナンバー。
pos = -123,-45
postype = p1
facing = 1 ;ヘルパーの左右の向き(1=そのまま・-1=左右反転)
ownpal = 0 ;ヘルパーの色を独立させるか否か(0=させない,1=させる)
ID = 999191
[State 191, ステート変更];アニメーションが終われば「通常立ち」のステートに変更する
type = ChangeState
trigger1 = NumHelper = 0
value = 0
[Statedef 999191];ヘルパーステート
type = A
ctrl = 0
anim = 999191
velset = ceil((parent,BackEdgeDist)-73.9),-3;1.1,-3
[State 191, 重力]
type = Gravity
trigger1 = time >= 10
[State 191, 地面に着く]
type = velset
trigger1 = pos y >= 0
x = 1.15
y = -8
[State 191, アニメ変更]
type = changeanim
trigger1 = pos y >= 0
trigger1 = pos x <= (parent,pos x) -40
value = 999192
[State 191, アニメ変更]
type = changeanim
triggerall = anim != 999193
trigger1 = pos x >= (parent,Pos x)-30
value = 999193
[State 191, 移動速度リセット]
type = velset
trigger1 = pos x >= (parent,Pos x)
x = 0
y = 0
[State 191, ステート変更]
type = changestate
trigger1 = pos y >= 0
trigger1 = vel y >= 0
value = 999193
[Statedef 999193]
type = A
ctrl = 0
anim = 999194
[State 191, 位置戻す]
type = posset
trigger1 = time = 0
value = 0,0
[State 193, ヘルパー消す]
type = destroyself
trigger1 = time = 10
自己解決しました
すみません
マガキ(KOF)みたいな相手に対して鳥篭喰らってるときに、ある技をリバサ発動する記述を作りたいのですが
いまひとつグッと来る記述が思い当たりません。
下記3つか、それ以外を組み合わせる形式が良いのではないかとまでは考えたのですが……
◆画面上に飛び道具が一定数以上存在する。
⇒ProjectileではなくHelperに直接Hitdefを与えるタイプの飛び道具だと認識できない。
Helperの絶対数を数えればと思ったのですが、エフェクトや各種処理のために出しているヘルパーと見分けをつけようがない
ラウンド開始時のHelper数を記憶させればゲージとかの常時展開型Helperは除外して数えさせることは出来ると思うのだけれども、どうにも不確実性が高いのでゲージ技の記述には向かないのでは?
◆常時監視で「飛び道具を喰らった回数」を見張らせる
⇒記述自体は可能と思われるものの、単体では適用範囲が広すぎるので条件としてゆるいかも
◆飛び道具でダウンする(もしくは、それがn回連続する)
⇒Commonのダウンステートへ送られる時の喰らった攻撃or最初に喰らった攻撃を常時監視ステートで記憶させるようにすれば、一応は可能なはず。
が、コンボの〆に飛び道具を使うキャラとかの場合、誤認する恐れが高い?逆に弾幕張って接近してくるor起点にしてくるキャラを認識できない可能性も?
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; 初期相手ヘルパー数確認
;━━━━━━━━━━━━━━━━
[State -2, VarSet]
type = VarSet
triggerAll = !var(57)
trigger1= RoundState = [0,1]
var(57) = Enemy,NumHelper
[State -2, VarSet]
type = VarSet
triggerAll = var(57) > Enemy,NumHelper
trigger1= RoundState = 2
var(57) = Enemy,NumHelper
[State -2, VarSet]
type = VarSet
triggerAll = var(57) < Enemy,NumHelper
trigger1= RoundState = 2
trigger1= StateNo = 0 && !Ctrl
trigger1= EnemyNear,StateNo = 0 && !EnemyNear,Ctrl
var(57) = Enemy,NumHelper
[State -2, VarSet]
type = VarSet
triggerAll = var(57) > 0
trigger1= RoundState = 4
var(57) = 0
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; 飛び道具を喰らった回数
;━━━━━━━━━━━━━━━━
[State -3, VarAdd]
type = VarAdd
triggerAll = EnemyNear,HitDefAttr = SCA,NP,SP,HP
triggerAll = Time = 1 && Alive
trigger1= StateNo = 5000 || StateNo = 5010 || StateNo = 5020 || StateNo = 5070
var(x) = 1
これに変数リセット記述を加える
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; 飛び道具でダウンする(もしくは、それがn回連続する)
;━━━━━━━━━━━━━━━━
記述思いつかずorz
投稿してから気付きました
triggerAll = EnemyNear,HitDefAttr = SCA,NP,SP,HP
これだとProjectile喰らったことを認識できないですね、本体かヘルパーがP属性のHitdef出してないと反応しないです。
ヘルパーアーマー記述みたいな飛び道具しか喰らわないヘルパーを出そうかって思いましたが、その場合ヒットスパークが2重に出てしまう;
飛び道具ヘルパーであればMoveType=Aになってる筈だから
PlayerIDリダイレクトでヘルパーのMoveTypeとTeamSideを監視すれば識別できると思う
PlayerIDは通し番号だから新しく出したヘルパーからPlayerID(ID-1)とかで参照可能
飛び道具喰らった回数のカウントなら
[State ]
Type = HitOverride
Trigger1 = 1
Attr = SCA, NP, SP, HP
StateNo = 5090
Time = -1
で飛び道具被弾時に適当なステート飛ばして
[Statedef 5090]
Type = U
MoveType = H
Physics = U
[State ]
Type = VarAdd
Trigger1 = 1
V = ***;適当なVar番号
Value = 1
[State ]
Type = ChangeState
Trigger1 = StateType = S
Trigger1 = GetHitVar(yVel) = 0
Value = 5000
[State ]
Type = ChangeState
Trigger1 = StateType = C
Trigger1 = GetHitVar(yVel) = 0
Value = 5010
[State ]
Type = ChangeState
Trigger1 = StateType = L
Trigger1 = GetHitVar(yVel) = 0
Value = 5080
[State ]
Type = ChangeState
Trigger1 = (StateType!=A)*(StateType!=L)
Trigger1 = GetHitVar(Type) = 3;Trip属性
Value = 5070
[State ]
Type = ChangeState
Trigger1 = 1
Value = 5020
で即座に本来の喰らいステートに戻せばいいんじゃない?
HitOverrideの副作用で「P2StateNo付きのP属性の攻撃」を喰らわなくなっちゃうけど
A属性やT属性は通常通りMUGENの内部処理に従って喰らい処理ができる
製作中のキャラに固有ゲージというか固有アイコンを作ろうとしたのですが、
どうしても移動するとそれが画面外へ置いてけぼりになってしまいます
ヘルパーを使っているのですが、どなたか解決方法を知っている方がいらっしゃるなら、
是非教えてください
よろしくお願いします
基本的にそういうのはExplodで作った方が楽だけど
HelperでやるならxはPosSetで「適当な数字」(FacingかTeamSideを考慮して)、yはPosAddで「適当な値-ScreenPos y」を常に実行させる
PauseMoveTimeやSuperMoveTimeを適当に大きく設定するのは当然だけど、どうしても多少のズレはでてきちゃう
あとはHelperType=Playerで出した場合(インジケーター用のヘルパーなら普通はやらないけど)はScreenBoundを0にしとくことも忘れずに
>>901
アドバイスありがとうございます!
やはりExplodの方にすべきですかね…
Explodの場合ならどのように記述すると画面内に固定になるのでしょうか?
PosTypeをLeftかRightにしてBindTimeを-1にすればいい
PauseMoveTimeとSuperMoveTimeをちゃんと設定すれば暗転中に画面が移動しても置き去りにされることもない
状況に応じて変化するインジケーターはRemoveExplodで古いのを消して新たにExplod実行する感じ
ありがとうございます!
無事ゲージを搭載できました
どうも、投げ技を作り始めて早速躓きました、鰐です。
記述は以下のような感じで、相手を後方に投げて叩きつけるのですが、
その後selfstateでstate5100に入りバウンド中の相手が、投げた側が投げ動作終了して立ち状態に戻ると同時に
投げた側の足元まで瞬間移動?して戻って(接近して)来てしまうのです
statedef716で設定しているvelXは一応活きてるようで跳ね上がるときには離れるように弾んでいくのですが
バウンドの途中で叩きつけた位置よりもやや近い間合いまでワープしてきます
どのあたりが原因でこのようなことが起こるのかわからず難儀しており
ご教授いただければ幸いです
;背負い投げ
[statedef 710]
(略)
[state 710, 攻撃判定]
type = hitdef
triggerall = (P2stateno != [150,155]) || P2stateno != 40
trigger1 = animelem = 2
attr = S,NT
hitflag = HL
priority = 1, miss
sparkno = -1
P2facing = 1
P1stateno = 711
P2stateno = 715
fall = 1
fall.recover = 0
(略)
;背負い投げ、投げ動作
[statedef 711]
type = S
movetype = A
physics = N
anim = 711
poweradd = 0
[state 711, 投げられ側座標1]
type = targetbind
trigger1 = animelemno(0) = 1
pos = 50, 0
(略)
[state 711, 投げられ側座標7]
type = targetbind
trigger1 = animelemno(0) = 7
pos = -75, -34
[state 711, 投げられ側座標8]
type = targetbind
trigger1 = animelem = 8
pos = -70, 0
[state 711, 投げダメージ]
(略)
[state 711, 投げられ側を投げられ終了ステートに送る]
type = targetstate
trigger1 = animelem = 8
value = 716
[state 711, 叩きつけエフェクト]
(略)
[state 711, ターン]
type = turn
trigger1 = animelem = 11
[state 711, 動作終了]
type = changestate
trigger1 = animtime = 0
value = 0
ctrl = 1
;背負い投げ、投げられ動作
[statedef 715]
type = A
movetype = H
physics = N
velset = 0, 0
[state 715, 投げられ動作アニメ]
type = changeanim2
trigger1 = time = 0
value = 715
;背負い投げ、投げられ終了
[statedef 716]
type = A
movetype = H
physics = N
velset = 2.2, 0
[state 716, 投げられ終了〜ダウン]
type = selfstate
trigger1 = time = 0
value = 5100
ワープならこっちのTargetBindか相手のPosSet/PosAddだろうから
TargetBindのどれかが誤作動してるんじゃない?
Trigger1 = Anim = 711を全TargetBindに付け加えても起こるかどうか確認かな
早速の書き込みどうもです。
試してみましたがその方法では挙動変りませなんだ…
common1の記述との兼ね合いで変になってんのかとも思い
バウンド部分までstate716内で作って完全に倒れてからダウン状態に直接移行みたいにもしてみたんですが
それでも動作中に(投げた側が通常立ちに戻ると)posずれるんですよねー。
見た目的には(投げた側の投げモーションの)animtime = 0 をトリガーにposset(X)かtargetbindが働いてるようなんだけど…
解決しました!
最初のtargetbindのトリガーを
animelemno(0) = 1(0フレーム後のアニメコマ数が1である)から
animelemtime(2) < 0(アニメが2コマ目に変わった瞬間からの経過時間が0未満である、つまりまだアニメ2コマ目に変っていない)
に変更することで解決しました。
仕様上、各アニメーションはchangestateしなければ最初にループする都合上、
animtime = 0 (アニメーションが一週終わった瞬間)にも animelemno(0) = 1 (次の瞬間にアニメが1コマ目)を満たしていると判断されるようです。
カンフーマンに倣いanimelemtime(2) < 0にするとこちらはアニメ終了時のタイミングは含まないのでtargetbindが暴発しないのでした。
奥が深い(何
今更ですけど、ステコンに
persistent=0
を付けるっていう方法でも良いんじゃないかなと思います。
これを付けたら一度しか実行されなくなりますし。
調べてみました。なるほど…こんな記述追加要素もあったのですな。
ご教授有難うございます、憶えておこうと思います。
…奥が深い(また
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板