レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
-
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
-
続き
で
HitPause中だと、基本的にほとんどの処理が止まる中
IgnoreHitPause = 1 の力を受けたChangeAnimは処理を実行
現在表示されているスプライトを消去
Begin Action 100を発動させる
が同時に行わる処理を実行
表示されているスプライトが消え
処理0 [Begin Action 100] ;Begin Action 100を発動させる ←これ
処理1 100, 0, 0, 0, 2 ;Begin Action 100の1枚目を表示
処理2 100, 1, 0, 0, 2 ;Begin Action 100の2枚目を表示
処理3 100, 2, 0, 0, 2 ;Begin Action 100の3枚目を表示
処理4 100, 3, 0, 0, 2 ;Begin Action 100の4枚目を表示
処理5 100, 4, 0, 0, 2 ;Begin Action 100の5枚目を表示
処理6 100, 5, 0, 0, 2 ;Begin Action 100の6枚目を表示
:
処理n 100, n, 0, 0, 2 ;Begin Action 100のn枚目を表示
を実行し、ChangeAnimの処理は終わり
今度は
処理0 [Begin Action 100] ;Begin Action 100を発動させる
↓
処理1 100, 0, 0, 0, 2 ;Begin Action 100の1枚目を表示
処理0→処理1に以降する仕事はBegin Actionの管轄なんですが‥
Begin ActionはIgnoreHitPause = 1の力を受けていないので
動けない。
だから透明になってしまう。
ということなんだろうと思います。
-
なるほど…Air側の処理は、深く考えてなかったな…
「IgnoreHitPause = 1」関連の処理が怪しいと覚えておこう。
ありがとうございました!
>>158
モチ、IDは設定してます;
投稿用に余計なオプションパラメータ消した際に巻き込んじゃったみたいです。
-
reversaldefで打撃を、hitoverideで飛び道具を当て身…というか耐えさせてるんですが
喰らう予定だった攻撃のダメージ量を測るgethitvar(X)トリガーを使いたいです。
・reversaldefは攻撃判定VS攻撃判定で反応するので「攻撃を喰らう」わけではない
・gethitvarトリガーはMoveType=Hでないと機能しない
以上2点から、直接的手段での使用は無理だとわかったのですが、どうにかして相手の攻撃ダメージ量を測る手段はないでしょうか?
-
コンプゲーでもなければGetHitVar(Damage)使わずにダメージ情報取得するのは無理
AIの学習の要領でやっても一度喰らった攻撃じゃないと分からないし補正の影響で正確な値知るのが不可能
アーマー処理(本体HitOverrideでもヘルパーHitOverrideでも好きな方)使ってMoveType=Hの状態でGetHitVar(Damage)して
用が済んだらStateTypeSetでIやAに戻してやるしかない
AnimとかVelSetとかをStateDefのパラメータに置かず、TypeとかをU(Unchange)にして
PrevStateNoをトリガーにステコンで処理すればHitOverrideでStateDef読み直しても上書きされないし
AnimElem系のトリガー使えば(Timeは使えないけど)技の流れを阻害されることなく処理できる
詳細はアーマー持ってるキャラのcns参考にするといいよ
-
エリアルの調整していて気になったのですがair.hittimeとfall.recovertimeの二つの違いは
air.hittime 空中受身とか関係なくこれに設定した時間で行動可能状態になる。受身可能キャラならその前に空中受身することで行動可能になれる
fall.recovertime これ設定の設定時間まで受身不能。air.hittimeより短い時はこれの設定時間より早く受身などに関係なく行動可能になる・
という理解の仕方であっていますでしょうか?
-
一部アーク系キャラがCanRecover無視して空中受け身取るのはマジやめて欲しい。
-
>165
たぶん言い回しの問題で間違っているように見える。
このあたりは結構ややこしいです。
2,3日待ってください。
なんとか上手く解説して見せます。
やられ状態は大まかに2種類あって
A:最終的に[Statedef 5040]に到達するやられと
B:最終的に[Statedef 5050]に到達するやられがあります。
Bのときfall.recovertimeが関わってきます。
[Statedef 5050]の到達の経路は色々あって
経路しだいではair.hittimeは無視されます。
-
>>166
知らずに調整に使うととんでもないことになりますよね。
-
[State -2, VarSet / PrevStateNo_Check]
type = Null
trigger1= Var(50) != StateNo
trigger1= 1 || Var(51) := Var(50)
trigger1= Var(50) := StateNo
IgnoreHitPause = 1
↑は、ADS氏のメモにあった記述なんですが
これでPrevStateNo代用できるぞーレバー行動でズレなくなるぞーやっほーい
…って思って、AIに噛ませて記述したのですが、PrevStateNo(…の本来機能すべき数字)とも違った結果が出ることがままあるらしくバグ連発
何を間違えたのでしょうかorz
>>165
たぶん、あってる…と思いますが詳しい仕様知らないです、いい加減なこと言うのもアレなんでパスw
YESさん辺りが綺麗な回答を出してくれるでしょう(丸投げ)
-
>>165
検証してみたら、hittimeっていうのは操作不能時間とは関係ないのよね…
hittimeは、相手がやられ扱いになる時間で、数値が大きいとコンボのカウントが続きやすいっていうだけで、
例え受け身を取られても、hittimeで指定した時間内に攻撃を当てればコンボが続いていると判断される。
recovertimeはそのまま、受け身不可能な時間。
なのでhittimeとrecovertimeは別物と考えて良い。
と思います…
-
>>169
その方法だと1Fの間に複数回ChangeStateした場合に
PrevStateNoとVar(51)に食い違いが生じるんじゃないかな
特に内部処理のChangeStateや相手のTargetStateなんかが絡む時
あと、-2の特性上PauseやSuperPauseがかかってる時も怪しい
-
内部処理のCHangeStateが絡むと崩れてたのかな…?
んーむ…Pauseに関しては-1か-3に置けばいいっちゃいいはずですが、ステコン管理に使うにゃ脆いのかなぁ。
あ、1Fの間に複数回ChangeStateする場合って、どんなのでしょう?
-
1Fの間にというより-2と-2の間って言った方が良いかな
-2でVar代入→-1でChangeState→個別ステートでChangeState→次の周の-2でVar更新
デバッグ用のChange(Self)Stateが置いてある場合とか
-
あーにゃるほど
なんというかイメージは掴めました。
-2ステートの実行は1Fに一回だからってことかな
-
超必殺技発動時に背景を黒くしたいのでBgpalfxを使おうと思ったんですが
時間経過に応じて60Fかけて段々まっくろになって行って、240F黒のまま維持、60Fかけて元に戻すーという使い方をしたいです。
とりあえず黒くなる方向で組んでみたのですが…
[State 3000, だんだん黒く]
type = BgPalFx
trigger1= time = 0
sinadd = -205,-205,-205,110
time = 55
[State 3000, 黒維持]
type = AssertSpecial
trigger1= time >= 55
flag = noBG
flag2 = noFG
----------------------
[State 3005, まっくろ維持?]
type = AssertSpecial
trigger1= 1
flag = noBG
flag2 = noFG
…と書いて試したところ、bgpalfxのsinadd処理で一旦明るくなった後でassertの背景前景消しが発動してしまいました。
どうすればよいのでしょう?
-
>ganさん
>hittimeは、相手がやられ扱いになる時間で
そういうパラメーターでしたか。アドバイスありがとうございます。
-
>>171 >>173
代用は効きそうにないですが、バグはなくなったみたいです。
ありがとうございました!
-
>>175
type = BgPalFx
trigger1= time <= 300
add = -4*time,-4*time,-4*time
time = 2
type = BgPalFx
trigger1= time = [301,360]
add = -256+(4*(time-300)),-256+(4*(time-300)),-256+(4*(time-300))
time = 2
要望の効果はこの二つで出来る
前景消すかどうかはそちらの判断で
-
初めまして。製作でどうにも引っかかってしまいまして、宜しければご助力下さい。
アーマー技を作りたいのですが、流れ的に
コマンドを入力
↓
アーマー発動演出(一瞬ピカンと光る程度です)
↓
アーマー発動中(打撃や飛び道具に有効 投げは効く)
↓
十数秒経過で終了(終了モーションは特に無し)
アーマーの開始と同時に変数でカウントし、終了条件のトリガーとして使おうと思うのですが…
VarSet等記述しても、変数の中身が変わらず困っています。
もしくは変数を使って制御する自体が難しいのでしょうか。
ttp://acol.lomo.jp/arm_smp.txt
※CNSの中身が長くなりますのでこちらにテキストでまとめました。
宜しくお願い致します。
-
>>179
もしかして
v = 56
value = 1
と
var(56) = 1
の混同
-
-2にあるVarAddはvar(56) = 1としてるならv = 56は要らんね
で、-2は「本体」か「HelperType = Playerのヘルパー」しか実行しないから
9000番のヘルパーがVar(56)をカウントしないのは当然
対処法は
①Var(56)のVarAddを9000番に移動させる
②DestroySelfのTrigger1をRoot,Var(56) = 100に書き換える
のどちらか一方やればいい
-
…だね
[state -2,1];間違ってる
type = varadd
trigger1 = var(58) = 1
v = 56;→これ不要、消せばOK
var(56) = 1
-
つかVar(58)の存在意義が無いでしょ、これ
毎フレームVar(58)に1を代入してるだけだし
①やる場合はVarAddのTrigger1も書き換える必要があるね
あと、PlaySndも書き換えなきゃいけないから②の方が楽
-
179です。
皆様とても素早い回答有難う御座いました!
他にもこちらで間違えていた箇所があったのですが、何とか気づいて修正ができました。
お陰様で無事作動しているようです。
-
なんかもう‥>>165解決しちゃいましたね。
いや〜めでたい!
orz
でもせっかく調べたし‥
僕なりの答えを描きたいと思います。
[空中で攻撃を当てた際、相手が復帰する時間]
ここでいう復帰とは
・着地([Statedef 52]に移ること)
・受身可能([Statedef 5200]or[Statedef 5210]に移ることが可能であること)
・行動可能([Statedef 5040]においてCtrl = 1 であること)
のことです。
[空中で攻撃を当てた際、相手が復帰する時間]は
A:最終的に[Statedef 5040]に到達するやられ(fall = 0)での復帰時間
B:最終的に[Statedef 5050]に到達するやられ(fall = 1)での復帰時間
に分けられます。
↑これを一般的に表せば質問の回答になりそうなので調べました。
-
でその答えが↓です。
A:最終的に[Statedef 5040]に到達するやられ(fall = 0)での復帰時間
は
□
基本的には
・(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)
・(air.hittime)
の短い方
□1
{([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を満たしたときのみ
・(Vel Y > 0 && Pos Y >= 0 を満たすまでの時間)
・(air.hittime)
の短い方
B:最終的に[Statedef 5050]に到達するやられ(fall = 1)での復帰時間
は
□
基本的には
・Vel Y > -1になるまでの時間
・fall.recovertimeで設定した時間
の長い方
□2
{(fall.recovertime)&&(Vel Y > -1になるまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)}
=<(air.hittime)
=<{(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
を満たしたときのみ
・(air.hittime)
あっているかどうか不安なので
途中式書いておきます。
□1の途中式
[Statedef 5030]で
([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)
=<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
且つ
[Statedef 5035]で
{([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を言い換えると
{([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
□2の途中式
{(fall.recovertime)&&(Vel Y > -1になるまでの時間)}=<(air.hittime)
[Statedef 5030]で
([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)
=<{(air.hittime)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
且つ
[Statedef 5035]で
(air.hittime)
=<{([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)&&(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)}
を言い換えると
{(fall.recovertime)&&(Vel Y > -1になるまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)}
=<(air.hittime)
=<{(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)&&([Statedef 5020]で指定され[Statedef 5030]から開始するAnimの表示時間)+([Statedef 5035]で指定されたAnimの表示時間、指定されなければ0F)}
-
「なんかややこしくてめんどくさそう」って感想の人は
すべてのHitDefに
fall = 1
air.hittime = 0
をつけると
[空中で攻撃を当てた際、相手が復帰する時間]
は
・Vel Y > -1になるまでの時間
・fall.recovertimeで設定した時間
の長い方
になります。
簡単でおすすめです。
もしくは
着地の誤差を無視して(所詮は1F,2Fの誤差だし着地硬直は結構キャラによって違うし)
air.hittime > fall.recovertime にならないように気をつけてさえいれば
(fall = 0)で
・(Vel Y > 0 && Pos Y >= 10 を満たすまでの時間)
・(air.hittime)
の短い方
(fall = 1)で
・Vel Y > -1になるまでの時間
・fall.recovertimeで設定した時間
の長い方
です。
-
読むのタルいって人は
>>187
の
>すべてのHitDefに
から
>簡単でおすすめです。
まで読めば多少得るものがあるかもしれません。
-
Fall = 1付けちゃうと足払いみたいに地上にいる相手からもダウン奪っちゃうから
そういう技以外はFall = 0(省略可)とAir.Fall = 1付けないとダメだからね
-
>>178
できました! ありがとうございます!
-
>>189
補足サンクス
-
初めまして。
レンのアレンジキャラを制作して、
DIOの「貴様、見ているな!」
のポーズをレンで書きたいのですが…
やり方がいまいち分からないです。
もし、よろしければご教授願います。
また、参考になるサイトを知っていらっしゃるのであれば、
教えてもらえるとありがたいです。
-
ここ、CNSメインの板だから…いや、いいのかもだけど
ともかく、実際に悪戦苦闘した成果をドット絵版に投稿するのが一番早いです。
どんなアドバイスを受けようともコピーするんじゃない限り描くのは御自分ですので
やってみないとわからないことは千万の数じゃききませんから
-
>CNSメインの板
別にそういう感じでもないですが、
ドット絵の質問といえばドット絵版です。
あそこの方が指導者の層が厚いですよ。
質問は具体的なほど返答がもらえます。
まずドット絵の作成方法がわからない、なんてことならココで出来る限り教えます。
ツールを使ってドット絵をヘタでもなんでも描けるならば、
描いてドット絵版に投稿するといいですよ。
-
スレ違いな質問にも答えてくださってありがとうございます。
下手なりにも描いて投稿してみます。
-
どうも、初歩的な問題だと思うのですがどうにもよく分からないので質問させてください。
設置系飛び道具で、画面上に2つ出そうとすると1つ目が消えるようにしたいと思ってます。
↓ヘルパーのchangestate
[State 6110,6]
type = changestate
trigger1 = MoveHit = 1
trigger2 = movecontact = 1
trigger3 = time = 360
trigger4 = numhelper(6110) = 2
trigger4 = time >= 2
value = 6111
[Statedef 6111];消滅ステート
簡単にこんな感じの記述をしたのですが消えませんでした。稚拙な質問ですがアドバイスをお願いします。
-
質問趣旨と違うんだが、気になったんで。
肝心の話は、ちょっとわからんです。
[State 6110,6]
type = changestate
trigger1 = MoveHit = 1;これバグの元「=1」不要
trigger2 = movecontact = 1;これもバグの元「=1」不要、否定したい場合はtrigger1=!MoveCotactと用いる
trigger3 = time = 360
trigger4 = numhelper(6110) = 2
trigger4 = time >= 2
value = 6111
-
それは接触しても消えないのか、2つ置いても1つ目が消えないのか…
多分、numhelper(6110)をroot,numhelper(6110)に変えればいいんじゃないかと。
そのままだと、「ヘルパーが出した」IDが6110のヘルパーの数かと思うので。
-
>>gan さん
接触では消えたのですが2つ目を出しても消えなかったので。
をroot,numhelper(6110)をつけてみたのですがうまくいかなかったので、発生前のエフェクトを使って
root,numexplod(1110) = 1
trigger4 = time >= 30
という形でやってみたらなんとかなりました。アドバイスありがとうございました。
-
さあ派生技のCNSを書いてみようと挑戦したところさっそくエラーが・・・・。和訳KFの派生CNSを元にしたんですが?技の性能上KFMのCNSの数字いじるだけではだめだしなぁ・・
毎度のことで申し訳ありませんがどなたかアドバイスしていただければ幸いです。
まず既に製作済みの派生元の技のCNSに以下を追記
[State 1100, ステート変更];追加入力
type = ChangeState
trigger1 = Command = "x"
trigger1 = p2statetype! = A
trigger1 = movecontact
value = 1200
長くなるので分割投稿になります。
-
続いて派生技のCNSを
;ドライブ地上ヒット派生上段ふっとばし
[Statedef 1200]
type = A
movetype= A
physics = A
juggle = 4
poweradd= 40
velset = 3,-1
anim = 1200
ctrl = 0
sprpriority = 2
[State 1200, 速度加算]
type = VelAdd
trigger1 = AnimElem =4
x = -1
[State 1200, 音を鳴らす]
type = PlaySnd
trigger1 = AnimElem = 3
value = 0, 3
[State 1200, 物理的なキャラの幅]
type = Width
trigger1 = AnimElemTime(3) >= 0 && AnimElemTime(5) =< 0
value = 10,0
[State 1200, ヒット定義]
type = HitDef
trigger1 = Time = 0
attr = A, SA
animtype = Hard
damage = 50, 5
priority = 3
guardflag = MA
hitflag = MAF
pausetime = 15,15
sparkxy = 0,-65
hitsound = 5,3
guardsound = 6,0
ground.type = High
ground.slidetime = 16
ground.hittime = 18
ground.velocity = -10
guard.velocity = -7
air.velocity = -3.5,-4.5
airguard.velocity = -3.5,-4.5
air.hittime = 20
[State 4];着地stateに移行
type = ChangeState
trigger1 = Vel Y > 0 && Pos Y >= 0
value = 1201
;■着地state
[Statedef 1201]
type = S
movetype = I
physics = S
anim = 6
ctrl = 0
velset = 0,0
sprpriority = 2
[State 5];地面に立たせる
type = PosSet
trigger1 = time = 0
y = 0
[State 261, 3]
type = MakeDust
trigger1 = time = 0
pos = -10,0
pos2 = -20,0
spacing = 1
[State 1201];立ちstateに戻る
type = Changestate
trigger1 = time = 15;(硬直時間)
value = 0
ctrl = 1
-
えっと物凄く初歩的なので聞きづらかったんですが
空中投げでいきづまってます。一応調べながら
やってみてはいるんですが時間かかりすぎ?
ソロソロ一時的に報告ついでにうpしようと思ってはいるんですけど
どうにも成功しない?('A`;)
空中投げのタイプとしては秋葉系のつかんで落下タイプ
キャラの位置を動かせる段階なのか?
メルブラ風の空中投げみたいにしたいけれど…と悩んでいるんですよね〜
どうせうpするなら先に公開してもいいよね。
と言うわけでうpろだの方に置いてみます。
CNSとかその他もろもろ解ってないですね。
一応その他注意点として上に吹き飛ばすと挙動が変?
大まかにソレじゃないかと思い当たるふしはあるけれど
とりあえず後回しに…してあります。
更に…空中ジャンプキャンセルの回数制限も設定して無いですね。
コレかな?と思ったものをコピペしてみたら偶然出来たのでw
コレはテストプレイ中はそのままで遊び要素としておいて置こうかな?とか
考えています。まぁ修正しなきゃいけないんですけどね
独学でやっててかなりおかしくね?と言う結論になったので
わかる人に見てもらった方が良いかなと
なんか色々すみません
旧アップローダーに置かせていただきました。
-
>200
すいません解決しました。Widthの記述を削除したらちゃんとなりました。
-
すみません初歩的な質問なんですが、例えばタッグマッチで
貫通ビーム系の必殺技を敵二体同時に当てた場合、ヒットスパークも
二体別々に表示させる方法っていうのは有るんですかね?
-
>>202
ろだに上げてもURLなり番号なりを貼らんと
手を差し伸べてくれる人いないんじゃないかな
あと、空中投げについてアドバイスを欲してるんだとは思うけど
色々書いてるけど具体的にどこがどう行き詰ってるのかが不明瞭
>>204
Type = Explod
Trigger1 = Enemy(0),GetHitVar(Damage)
PosType = Left
Pos = (Enemy(0),ScreenPos x),(Enemy(0),ScreenPos y)
Persistent = 0
Type = Explod
Trigger1 = NumEnemy >= 2
Trigger1 = Enemy(1),GetHitVar(Damage)
PosType = Left
Pos = (Enemy(1),ScreenPos x),(Enemy(1),ScreenPos y)
Persistent = 0
上には書かなかったけどAnimとかFacingとかは適切に設定
-
>>205
あら('A`;)うっかり
すみませんでした。
旧うぷろだの175.zipですね。
ttp://loda.jp/dteit009/?id=175
こうかな?
URL書いてないの気が付いてなかった。指摘ありがとうゴザイマス。
ほとんど解ってないのですけれど
まずは、食らいモーション中に出せるようにする所でしょうか?
-
>>205
とても丁寧な説明ありがとうございました。
お陰様で上手くいくことが出来ました。
-
>>206
[State -1, 空中投げ]
type = ChangeState
triggerall = (Command = "a+b")
TriggerAll = Command = "holdfwd" || Command = "holdback"
TriggerAll = Statetype = A
TriggerAll = P2Statetype = A
trigger1 = (Ctrl)
trigger1 = (P2MoveType != H)
value = 820
これから
trigger1 = (P2MoveType != H)
をはずすだけです。
他にも質問ありそうですね。
箇条書きでどんどん質問してください。
-
>>208
ありがとうゴザイマス。お陰で修正できました。
では箇条書きで
・空中から着地時に別のアニメーションを表示させたい(叩きつけるモーション)
・ダウンを奪うやり方はこのキャラの後方投げで問題が無いのか気になりますね。
かなり強引なやり方だった気がするので
特に聞いておかないとワカラナイのはココだけですね。
-
一つ目
trigger1 = Pos Y >= 0 && vel Y > 0 ;地面からの高さが0以下(地面にめり込んでいる)、かつ落下している
こいつを条件に使って
ステートコントローラーChangeAnimで
アニメーションを変えてください。
二つ目
問題ないです。
ただし
SelfStateの発動条件を適切なものにしてください。
-
ガードポイント的な技を作っていて、
ヘルパーの常時ガードステートを用いてますが、ガード不能攻撃を
受けた場合に分身バグが起きてしまいます。
ニコニコmugenwikiのガードポイントの項目には
HitOverRideを使うとあるんですが、ガード不能だけ判別とかできるんですか?
それとも何か上手な使い方があるんでしょうか?
どなたかアドバイス宜しくお願いします。
-
ガー不攻撃も耐えるガードポイントなら
ヘルパーHitOverride使って、GuardFlag問わずガードステートに飛ばせばいい
ガー不攻撃で仰け反る(そのまま喰らう)GPは工夫が必要だけど
-
ガード不能は喰らいます。なおかつ腕部分のみGPって感じの技です
-
横槍失礼
ガードポイントは難しいと聞きます、参考になる(信頼性の高い)記述とか持ってるキャラっていますか?
-
いえ、ウェブの解説など見ながら一から構築しています。
多くのキャラは本体ごとガードステートに移行方式(全身GPになってしまう)
リバーサル方式(飛び道具が防げない、相手のコンボを切ってしまう)
なので今回の場合、あまり参考になりません。
一応ガードしてから攻撃、下半身はダメージ通る、投げは喰らう
ところまでは出来まして、あとはガード不能技の対処って感じです。
-
>>210
1.ありがとうゴザイマス。修正できました。
けれど着地モーションに移行するので何か対策を探しています。
2.SelfStateと言うとダウンを奪う形なのでアレで済ませてましたけど
時間でステートをお返しするタイプもつけておくべきという事ですか?
-
>>215
GPヘルパーは本体に軸重ねてると思うからHelperType = Playerにしておいて
喰らいステートに移行したら(ガードできなかったら)本体も専用喰らいステートに移行
もしGPヘルパーがステート奪われたら-2でSelfStateかDestroySelf
専用喰らいステートは5000番台のステートをコピぺして
GetHitVarをHelper(**),GetHitVarに置き換えたもの
5000番台使ってもいいんだけど条件分岐面倒だから専用ステート用意した方が楽
-
>>216
えー1.は出来てませんでした。
[State 821, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (AnimElemTime(15) >= 0)
value = ifelse(StateType=A,51,0)
ctrl = ifelse(StateType=A,0,1)
コレがほぼその原因らしいけれどはずすと
空中で停止します。何か手を考え中
-
[Statedef 821]
を
;---------------------------------------------------------------------------
;成功(放り投げる)
[Statedef 821]
type = A
movetype = A
physics = N
anim = 821
ctrl = 0
poweradd = 60
velset = 0,0
[State 821, 掴んだ相手の位置]
type = TargetBind
trigger1 = 1
pos = 0, -90
[State 821, 移動速度]
type = VelSet
trigger1 = time = 0
x = 1.5
y = -8
[State 821, 速度加算]
type = VelAdd
trigger1 = 1
y = 0.4
[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0
[State 821, 移動速度]
type = PosSet
trigger1 = Pos Y >= 0 && vel Y > 0
y = 0
まるまるこう書き換えて>>210を試してみてください。
-
あれ?出ない?なんかすみません
確認の為に…
;---------------------------------------------------------------------------
;成功(放り投げる)
[Statedef 821]
type = A
movetype = A
physics = N
anim = 821
ctrl = 0
poweradd = 60
velset = 0,0
[State 821, 掴んだ相手の位置]
type = TargetBind
trigger1 = 1
pos = 0, -90
[State 821, 移動速度]
type = VelSet
trigger1 = time = 0
x = 1.5
y = -8
[State 821, 速度加算]
type = VelAdd
trigger1 = 1
y = 0.4
[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0
[State 821, 移動速度]
type = PosSet
trigger1 = Pos Y >= 0 && vel Y > 0
y = 0
[State 821, アニメ変更]
type = ChangeAnim
trigger1 = Pos Y >= 0 && vel Y > 0 ;地面からの高さが0以下(地面にめり込んでいる)、かつ落下している
value = 825
[State 821, ステート変更]
type = ChangeState
trigger1 = (StateType != A) && (AnimTime = 0)
trigger2 = (StateType = A) && (AnimElemTime(15) >= 0)
value = ifelse(StateType=A,51,0)
ctrl = ifelse(StateType=A,0,1)
;---------------------------------------------------------------------------
>>210
と言うとこの辺までですよね?
アレ?アニメーションの登録位置がおかしかったのかな?
-
おおお落ち着いてください。
よく見て。その位置に(ChangeAnimを)入れると(ChangeAnimの)トリガーが満たされない。
入れるなら
[State 821, 移動速度]
type = VelSet
trigger1 = Pos Y >= 0 && vel Y > 0
x = 0
y = 0
の上です。
いっぺんChangeStateを入れずに
ChangeAnimだけ入れてみてください。
-
ああなるほどソコでしたか。すみません
何とかアニメーションは変更できましたが
アニメーションが1枚目で止まりっぱなしで
1p2pともにうごけなくなります。
-
それならば
ChangeAnimのトリガーに
trigger1 = anim = 821 ;現在のanimが821番である
を付け加えてください。
>うごけなくなります
[Statedef 821]のどこかに
[State 821, ステート変更]
type = ChangeState
trigger1 = anim = 825
trigger1 = animtime = 0
value = 0
ctrl = 1
を入れ
[Statedef 821]のTargetBindの発動条件に
trigger1 = anim != 825
を足し
[Statedef 823]に
[State 821, 移動速度]
type = VelSet
trigger1 = enemy,anim = 825
x = 3
y = -4
をくわえる。
こんな感じで如何でしょう。
-
>>223
お陰で解決できました〜ありがとうございます。
後でキャラクターの細かい位置調整をしておきます。
いやほんとにありがとうございました。
-
う〜ん、対策の仕方は一様分かってるのですが。
trigger○ = Palno = [1,6](多分意味的には1pから6pまで、だと思う)
と入れるとCMBではちゃんと有効になるんですが、−2とかになると、エラー吐かれるんですよねぇ。
と、なると
trigger○ = palno = 1
(中略)
trigger○ = palno = 6
まで一々書かないといけないのでしょうかね?
めんどクセぇ・・・・もっと手間が省ける方法ないのかなぁ?
-
追記
どっかの記述がtype = ~~~~
が抜けてたのが原因だったみたい。
クソ過ぎる理由でエラー。
-
超必殺技の製作にあたり半透明エフェクトの解説を色々漁りまずは試しに先日作った飛び道具(「肉球)を半透明にしてみようと思ったのですがうまくいきません??
もしかしてエフェクトは半透明にできるけど飛び道具は半透明にできないのでしょうか?(多分私が何かミスってるだけだと思うのですが念のため質問させていただきました)
-
>>227
出来ますよ。
ヘルパーにAngleDrawか何か入れると
Airファイルの,Aが無効になったような覚えがあります。
そのときは
透明度を変えるステートコントローラーを使ったら何とかなったような気がします。
-
>>226
ドンマイ!
クールにいこうぜ。
-
昨日の私
EDGE あれ不透明度いじっても半透明にならなよ?→ぐぐる→他のツールをDL(ああこのツールの使いかた覚えるの大変そう)
今日
いろいろぐぐる→airをテキストで開いて,,Aで半透明になるよー→昨日の苦労はなんだったんだorz
-
あるあるw
ちなみにtransステコンでも同じ効果出せます。
-
ヘルパーアーマーって、根性値とかの元になってるDefenceMulSetが効かないのかなぁ・・・・?
それとも記述がおかしいのかなぁ?
それともかくとして、ヘルパーアーマーのダメージってどうやったら制御できるんだろ?
[State -2, アーマー受けした時のライフ減少]
type = LifeAdd
trigger1 = NumHelper(9000)
trigger1 = Helper(9000),GetHitVar(damage)
value = -1*Helper(9000),GetHitVar(damage)
absolute = 1
ignorehitpause = 1
これになんか色々すればいいんだと思うんだが・・・・うーん、やり方がイマイチわかりません;
ダメージを半分にしたり、無効化したりするのはどうしたら良いのでしょうかね?
-
>>232
DefenceMulSetのvalueを適当なfvar(●)で保存しておいて
232のvalueを
value = -1*floor(Helper(9000),GetHitVar(damage)*fvar(●))
にする、とか?
試したこと無いからわからない
-
ヘルパーステートか‐2で
常時、var(1)からvar(7)が0でない数がいくつあるかという数
を格納したいのですがおもいつきません
ヒントだけでもいいので教えてください
-
>>234
cns初心者で申し訳ないんだけど、これでできそうかな・・・?
[State -2,]
type = VarAdd
trigger1 = var(1) < 0 && var(1) > 0
trigger2 = var(2) < 0 && var(2) > 0
trigger3 = var(3) < 0 && var(3) > 0
・・・
trigger7 = var(7) < 0 && var(7) > 0
var(60) = 0
value = 1
var(60)へ、var(1)〜(7)が0でないとき+1してやる感じの・・・
間違ってたらごめんね(´・ω・`)
-
>>232
DefenceMulSetをヘルパーのステートでも実行しておけばいい
アーマーヘルパーなら常に本体と軸が重なってると思うから
HelperType = Playerで出して-2のDefenceMulSetを適用させてもおk
但し-2にある関係ないステコン全てにTriggerAll = !IsHelper付ける必要あり
>>234
Type = Null
Trigger1 = Var(x) := 0
Trigger2 = Var(1) != 0
Trigger2 = Var(x) := Var(x)+1
Trigger2 = 0
Trigger3 = Var(2) != 0
Trigger3 = Var(x) := Var(x)+1
Trigger3 = 0
Trigger4 = Var(3) != 0
Trigger4 = Var(x) := Var(x)+1
Trigger4 = 0
Trigger5 = Var(4) != 0
Trigger5 = Var(x) := Var(x)+1
Trigger5 = 0
Trigger6 = Var(5) != 0
Trigger6 = Var(x) := Var(x)+1
Trigger6 = 0
Trigger7 = Var(6) != 0
Trigger7 = Var(x) := Var(x)+1
Trigger7 = 0
Trigger8 = Var(7) != 0
Trigger8 = Var(x) := Var(x)+1
Trigger1でVarを初期化、Trigger2以降で0でない数をカウント
:=は代入で「Var(x) := Var(x)+1」はVar(x)に1を加算する
Trigger2からTrigger7にある= 0は次のトリガー読ませるため
-
>>235>>236
素早い回答ありがとうございます
おかげで一歩進めることができました
-
初歩的な質問で申し訳ないのですが、
飛び道具(Projectile)をAngleDrawで回転させる事はできないのでしょうか?
色々ためしても自キャラがくるくる回るだけになってしまいます・・・
-
>>238
Proj単体でそういうのは無理だったはず
現状、Helper使って表現したほうが吉かと
-
>>236
うーん、HelperType = Player入れるとダメージが入らなくなるなぁ・・・・どうなってんだろ?;
-
>>240
-2にある関係ないステコンに!IsHelper付け忘れてそれが悪さしてるか
DefenceMulSetにVarとか使ってるだろうからHelper側から読ませるときに
Root(またはParent)リダイレクト付けるのを忘れてるかのどっちかかな
Nomalヘルパーのまま本体のLifeAddの計算式にVar使ってもいいんだけど
万が一ステート奪われた時に-2でデバッグできるからPlayerヘルパーにした方が都合が良い
但し、本体と軸位置の違うヘルパーは相手の挙動(向き)に影響しちゃうから避けるべきだけどね
-
>>241
!IsHelperを加える関係ない-2が良くわからないので基本、全部に加えてみたら直った。
でも結局反映されないという振り出しに戻っただけ。
わけ分からんOTL
-
>>233 の方法じゃダメなんですか?
DefenceMulSetで影響された防御力の受ける数字は知らんとですが
Attack100→110に上昇させたら純粋に攻撃力1.1倍? 同じように計算できるんならですけど…
Defenceが200になってたら、lifeaddする数値が1/2されるって意味なんだから、同じようにvalueの数字乗算する記述にすればいいよーな
-
>>243
その方法が一番分かりやすいので試したいと思ってます。
ちょいとVarに関しては色々使い方に悩んで踏みとどまってるんですが・・・・。
てか、valueの保存?どやってやるんだろ・・・ちょいとサイトを連ねてるのですが・・・イマイチ感覚が働かん・・・・;
-
value=var(56)でいいんじゃないかな?
あ、悩んでる部分違います?
-
>>245
さ、さぁ・・・?ここらへんはまだ未経験ですからよくわかんない、という・・・。製作するにあたっては結構な問題だと思う;
あれ、保存するvarの数字って決まってたっけ?
つか、3種類のDefenceMulSetがあるからLifeAddも3種類に揃えなくちゃいけないのかな?
-
いや、なににどのvar(X)使おうがダイジョブですよ。
整数か否かでfvar(X)と使い分けることだけ気をつければ。
現在使ってる3種類のDefenceMulSetのトリガーを使ってfvar(X)を設定。
value=1*fvar(X)
って記述でDefenceMulSet定義するようにすればLifeAddも一個で済むハズっす。
-
こちらでははじめまして 今さらこんな質問で恐縮ですが・・
SFFの5030番台、20にはどんな絵を登録すればいいでしょうか
KFMや一部キャラだと5040-0と同じだったりまた他のキャラだと吹っ飛びの中割だったりで
よう分からんのです
-
>>248
この程度なら・・・・。
5020番台はしゃがみ食らい、30番台は吹っ飛びアニメですね。
ここら辺は伊吹川氏が運営している無限中学校で入手できる和訳KFMあたりに詳しく載ってます。
自分もそこからスタートして苦労してます;
あ、質問とずれてたかな?
まぁ同じっぽいスプライトを導入してるのは、おそらく≪メンドクサイ≫これが理由でしょう;つか、大抵の製作者はそんな感じ(蹴
自分は製作キャラで入手できた絵の問題上、一枚絵にしてます。違和感はあんま無い。
・・・・・まぁ要するに入れるスプライトは自由、という訳です。
20番はしゃがみ攻撃を食らってそうなスプライトを。30番は吹っ飛んでいくスプライトを入れる。
特に難しいことを気にせずした方が良いです。
問題のアニメーションはAIRで行うのでスプライトの番号は基本、フリーダム・・・・かな?(間違ってたらすまん)
整理の問題でアニメの番号と同じにするのがお勧めだけど。
>>247 >>233
作動しました。
助言ありがとうございます〜。
しかし、むっちゃくっちゃ硬くなってしまった;;;;
防御補正の記述はこんな感じ↓
[State -2,防御補正1];防御補正1
type = DefenceMulSet
TriggerAll = RoundState = 2
triggerall = !IsHelper
trigger1 = Life < 750
trigger1 = Palno = [1,6]
trigger2 = helper(9000),gethitvar(damage)
trigger3 = fvar(1)
value = 0.5
[State -2,防御補正2]
type = DefenceMulSet
TriggerAll = RoundState = 2
triggerall = !IsHelper
trigger1 = palno = 12
trigger2 = helper(9000),gethitvar(damage)
trigger3 = fvar(1)
value = 0.1
[State -2,防御補正3]
type = DefenceMulSet
TriggerAll = RoundState = 2
triggerall = !IsHelper
trigger1 = palno = [7,11]
trigger2 = helper(9000),gethitvar(damage)
trigger3 = fvar(1)
value = 0.5
[State -2,ダメ補正変数]
type = Varset
triggerall = !IsHelper
trigger1 = time = 0
fvar(1) = .1
すまん、良くわからないので何か助言を;
-
アーマー関連の構造がわからんので、適宜変えてもらうしかないけど
大まかには、こんな記述でいいんじゃないの?
少数整数使い分け間違ってるかもしれないけど、その場合修整してね。
[State -2, Varset]
type = Varset
triggerall = !IsHelper
trigger1 = Life < 750
trigger1 = Palno = [1,6]
trigger2 = palno = [7,11]
trigger3 = helper(9000),gethitvar(damage);→これ>>249の記述には二重にあるのがよくわからんです。
var(0) = 2
[State -2, Varset]
type = Varset
triggerall = !IsHelper
trigger1 = palno = 12
trigger2 = helper(9000),gethitvar(damage);→これ>>249の記述には二重にあるのがよくわからんです。
var(0) = 10
[State -2,防御補正]
type = DefenceMulSet
TriggerAll = RoundState = 2
triggerall = !IsHelper
value = 1*var(0)
-
AI作者の方にお伺いしたいのですが、
AIを作りやすいようなCNSの作り方ってあるのでしょうか?
-
>>249
お返事ありがとうございます!
言葉足りなくて申し訳ない グループ5030〜5032番、イメージ20番のことでした
吹っ飛びの中割でいいのかな→KFMのAIRには使われてない→でも必須スプライトだし何かしら意味が
→もしや20番だけ腰から落ちてるような絵を登録するのか?→でもKFMのAIR(ry
と悶々としてました
変に考えずにやってみるようにします ありがとうございました
-
>>249
まず、-2でTime=0を読み取れるのは
20とか40みたいに内部処理でChangeStateした場合などの非常に限られた場合のみね
で、FVar(1)を他で弄ってないならFVar(1)=0.1が成り立ってからはずっと
DefenceMulSet3つともTrigger3で有効になるから0.025倍のダメージになる
あと、根性値みたいに補正掛けるならLife < 750よりもLife < .75*LifeMaxの方が良い
Playerヘルパー使うってのは
Type = DefenceMulSet
TriggerAll = RoundState = 2
Trigger1 = !IsHelper
Trigger1 = (PalNo=[1,6])*(Life<.75*LifeMax)+(PalNo=[7,11])
Trigger2 = IsHelper(9000)
Trigger2 = (Root,PalNo=[1,6])*(Root,Life<.75*Root,LifeMax)+(Root,PalNo=[7,11])
Value = .5
Type = DefenceMulSet
TriggerAll = RoundState = 2
Trigger1 = !IsHelper
Trigger1 = PalNo = 12
Trigger2 = IsHelper(9000)
Trigger2 = Root,PalNo = 12
Value = .1
にして-2にあるDefenceMulSet以外にTriggerAll = !IsHelper付けるってこと
この場合はLifeAddは変えなくていい
>>233の方法使うなら
Type = DefenceMulSet
TriggerAll = RoundState = 2
Trigger1 = (PalNo=[1,6])*(Life<.75*LifeMax)+(PalNo=[7,12])
Value = FVar(x) := .5-.4*(PalNo=12)
にしてLifeAddのValueに*FVar(x)付けてCeil()かFloor()で囲えばおk
「Value = -Helper(9000),GetHitVar(Damage)」
↓
「Value = -Ceil(Helper(9000),GetHitVar(Damage)*FVar(x))」
みたいに
-
>>250 >>253
すんません;どうしたいか、ということが欠けてました;;;
基本的に1〜6の表カラーは体力が750より下になった時にダメージを半分にする根性値にしたい。
7〜11pはそれが最初からある防御補正。(さらに1〜6pの根性値を上乗せする?)
12pはさらに堅牢になってダメージを10分の1にしつつ、さらに根性値が掛かる。
そんな感じです。
-
どの手段とるかは、ともかく
根性値の意味で使うなら、DefenceMulSetの仕様上限界あるからLifeAddと組み合わせないとダメなんだよね。
詳しくはgoogle先生で「mugen 根性値」とかで調べてくださいな
常時アーマー展開前提のキャラなら、DefenceMulSetじゃなくってLifeAdd自体を弄るべきっすな
value=Value = -Ceil(Helper(9000),GetHitVar(Damage)*FVar(x))ってしてあげる方法で
fvar(x)の代入処理は前述の通りっす。
-
最初の質問(>>232)がDefenceMulSetをヘルパーアーマーに適用したいって話だから
アーマー用のヘルパー側からもDefenceMulSet読ませればいいじゃんってのが>>236や>>241のレス
MoveType!=Hの時の処理は別途用意してる前提で話してた
>>249のDefenceMulSet3つのTrigger1だけを拾って1つに纏めたのが>>253の3段落目
ついでにFVarへの代入もセットで実行してるけどね
でも>>254に「さらに根性値が掛かる」とあるからDefenceMulSetのValueを
Value = FVar(x) := .5-.4*(PalNo=12)-.05*(PalNo=12)*(Life<.75*LifeMax)
にすればいいかな、7〜11Pのカッコ内は疑問符打ってあるから取り敢えず無視したけど
別件だけど>>236読み返して、こんな処理しなくても普通に
Type = VarSet
Trigger1 = 1
var(x) = (Var(1)!=0)+(Var(2)!=0)+(Var(3)!=0)+(Var(4)!=0)+(Var(5)!=0)+(Var(6)!=0)+(Var(7)!=0)
でいいじゃんと思った
-
ぶっちゃけちゃんと作動してたみたい。
とりあえず、k氏改変ゴジラの強パンで115のダメージを食らう。一時期230を食らう時があった。
230の半分。つまり115は根性値として作動してたvalue = .5がちゃんと作動してたってことかな?
細かい事を散々いった挙句に作動してました〜。助言をくれたAzuma氏等、ほんと申し訳ありませんOTL
しかし、本来の問題が見えたような気がしました。
ようは1〜6pは750になるまで230のダメージを受けなきゃいけないのに、なぜか根性値であるvalue = .5がなぜか最初から起動してました。
これどうなってんだろ?
すんません、もうしばし知恵をお借りしたいです(_ _;
-
結局どういう記述になったの?
記述見ないことには何とも言えない
-
>>258
アドバイスを受ける前の記述に戻しました。
結局、ゴタゴタ加えて訳わかんなくなったので;
-
今更だけど、もう一回それのっけてくれると嬉しい
|
|
掲示板管理者へ連絡
無料レンタル掲示板