レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
(Random%241)-120
こんなんでいけない?
普通に「-120+Random%241」でいいんじゃない?
まあ0〜999を241で割った余りだから0〜206と207〜240とで確率が少し異なるけど
±を発生させる方法なら「1-2*Random%2」がある
タイムアップ時、特定数回復ってどうするのでしょうか?
[State -2];ラウンド終了時 ライフ回復
type = lifeadd
triggerall = !ishelper
trigger1 = roundstate > 2
trigger1 = alive
value = 100
ignorehitpause = 1
でやったのですがこれだと100回復した後、全快になってしまいました・・・
それだとトリガーが持続的に成立して何度も100回復しちゃうからね
常時監視ではPersistent使えないからVar使って回復済みフラグ立てて
そのフラグをトリガーに組み込むのが手っ取り早いかな
TriggerAll = !IsHelper
TriggerAll = RoundState > 2
TriggerAll = Alive
Trigger1 = Var(0) = 0
Trigger1 = Var(0) := 1;Var(0)に1を代入
みたいにすれば1度しか成立しなくなる
あとはRoundState < 2を条件にフラグをリセットしてあげれば2ラウンド目以降も実行できる
>>522
>>521
上手くいきました!ありがとうございますー
>blankさん
出来ました!ありがとうございます
通常攻撃(しゃがみ強P)を作っているのですが、
本体の動作とは別に、Explodを使って透過させた武器を持たせるように表示させています。
airのフレーム数を合わせると空振り時は問題ないのですが、
相手にヒットすると武器側はそのままの速度で動き、身体の方が遅れてズレてしまいます。
できればヒット時も身体と同期するようにしたいのですが、何か対処方法はありますでしょうか?
>>527
Explodのステコンにignorehitpause = 0
Jaldabaothさん
こういうのはどうでしょう?
Explodを二つ用意して、ひとつは通常の最後まで武器を振るアニメ、
もうひとつは、攻撃がヒットしてからのアニメを用意します。
通常のほうはRemoveExplodのtriggerをmovecontactで、攻撃がヒットしたら
いったん消す。
そして、もうひとつのExplodで攻撃後のアニメを表示させる。
というものです。
攻撃後のアニメは自分のpausetime分フレームをプラスしておいてください。
あと全部のステコンにIgnoreHitPause = 1をつけるのをお忘れなく。
説明が下手ですみません・・・
もしわかりにくかったら遠慮なく言ってください。
おっと、ずいぶん簡単な方法が出てましたねww
詳しく言うと通常のステコンはデフォルトがignorehitpause = 0 なのだけど、
Explodだけはデフォがignorehitpause = 1。
なのでignorehitpause = 0 を明記してやるとちゃんとhitpauseがかかるのですよ。
>>528
ありがとうございます。本体動作と同期するようになりました。
>>528
回答ありがとうございます。
今回は使用しなかったのですが今後のcns製作に活かしたいと思います。
内容としては
1.攻撃「ヒット」「空振り」2つのExplodを用意
2.相手との接触をトリガーにして「空振り」動作を消す
3.「ヒット」Explodで攻撃終了動作まで移行
4.「ヒット」Explodはヒット時の停止時間分フレームを増やす
5.他の動作部分(ステコン)はヒット停止時間の影響から除外する
という記述方法だと解釈しました。自信ないですけど…;
>>531
Explodに限り、ヒット時の停止時間の影響を無視する仕様なんですね。
そして、あらためて追記することでヒットしても同じ速度で動いてくれる、と。
すごいです。教えていただかなければ多分自力では辿り着けなかった…
説明ありがとうございます。とても勉強になりました。
>532
真ん中のレス番号間違えてます。529の社咲さん宛の回答です。すいません。
>>532
はい、そんな感じです。
イメージとしては投げ技のステートをExplodでやっただけみたいな感じです。
>>531
それは知らなかったですね。
proj〜関係もそうですけど、何でところどころ統一されてないんでしょうか・・・
使ってて結構混乱してしまいます・・・
単純にExplodがエフェクトとして使うことを想定されてるからかと
エフェクトにヒットポーズかかるのは変でしょ?
DamageとかGuardFlagは別だけど、大抵のパラメータは最も多く使われるであろう設定を初期値にしてあって
わざわざ記述しなくてもいいようにしてあるってこと
MUGEN の doc フォルダに使えるステコン全部書いてるファイルありますよ。
一度見てみると良いかも。省略時の設定値とかも全部書いてあります。
全部英語なので読みにくいですが、思わぬ発見があったりしますよ。
PlaySnd の設定に Volume の項があったりとか。
ちなみに、知っているかもしれませんが、そのファイルを翻訳しているサイトも存在します。
こちらは日本語。解説のほかに本家のほうに説明が無いバグとかも確か載ってたはず。
キャラ製作と言うよりかAIの話なのですが
飛び道具技で、発動後に角度を選択して、更にチャージ可能な技を撃たせる記述を作りたいです。
暗転発生23F+暗転後4F、下記4種類から選択して120Fまでチャージ可能と言う仕様です。
座標 速度 角度
(21,-73) (20,0) 0°
(46,-81) (25.02,-4.98) 13°
(18,96) (15,-15) 45°
(30,-100) (8.68,-21.34) 64°
技の発生命令、発動水平角度の射撃だけならば
[State -1, ChangeState__Blast_Pegasus/Ground]
type = ChangeState
value = 3400
triggerAll = var(58)
triggerAll = StateType != A && P2StateType != L
triggerAll = Power >= 1000
triggerAll = EnemyNear,StateType = S
triggerAll = EnemyNear,NumProj
trigger1= Ctrl ||(StateNo = [21,22])||(StateNo = [100,101])
trigger1= EnemyNear,MoveType != H
trigger1= P2BodyDist X >= 200+Vel X*5+EnemyNear,Vel X*5
…という記述で大丈夫だったのですが、角度選択をさせるための
「速度(a,b)で座標(x,y)から発射される角度nの射線の延長線上に来る」と予測させる記述が作れませんでした。
加えてチャージさせるか否かを判断させるための「射線上にnF後もいる」と計算させる記述も同様にわかりませんでした。
たぶん三角関数を使うんじゃなかろうかとは思うのですが…
なお、角度選択は変数で認識させており
cmdではなく技のステコン内の下記記述で管理しています。
[State 3400, VarSet]
type = VarSet
trigger1=!var(59)
trigger1= Command = "y"
var(10) = 0
お手数ですが、御存知の方はご教授願います。
速度(a,b)で飛ぶんだったら傾き=b/aだから
P2Dist y/P2Dist xがb/aと一致するか見ればいいんじゃない?
つまりP2Dist y*a=P2Dist x*bだね
割り算のままだと分母が0のときエラメ出るから掛け算に直してるけど
nF後は
(P2Dist y-n*EnemyNear,Vel y)*a=(P2Dist x-n*EnemyNear,Vel x*Facing*EnemyNear,Facing)*b
とかかな
xに関しては向き合ってるとは限らないからお互いのFacingかけた方がいいかと
あとは上の式だけだと発射方向の180度反対にいる場合でも成立しちゃうから
P2Dist x>0とかを併用した方がいいね
補足だけど完全一致だと条件厳しいだろうから
P2Dist y*a=[2/3*P2Dist x*b,3/2*P2Dist x*b]
みたいに幅を持たせた方がいいだろうね
ありがとうございます!
とすると、例えば4F後に射線上にいるかの判断は相手の速度etcを踏まえるなら
trigger1=P2Dist X > 0
trigger1=Facing!=EnemyNear,Facing
trigger1=(P2Dist Y+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X+EnemyNear,Vel X*4)*b
・・・という式になるとの解釈で大丈夫でしょうか?
それと、角度に関しては完全一致でなく判断に揺らぎを持たるべきーとあったので考えてみたところ
例えば±5°の範囲であればOKと認識させるなら
速度(a,b)を±5°それぞれで計算しておき、その傾きの範囲内にあるかを判断させる式になるのですが
射線上から±5°というのを先程の式に加筆して判断する方法は…ないものでしょうか?
重力のこと忘れてたけどそんな感じだね
tan(α+β)=(tanα+tanβ)/(1-tanα*tanβ)
tan(α-β)=(tanα-tanβ)/(1+tanα*tanβ)
だから5°の振れ幅を計算するためにtanαをb/aとしてβを5°としたら
+5°は(b/a+0.0875)/(1-b/a*0.0875)で-5°は(b/a-0.0875)/(1+b/a*0.0875)だから
P2Dist y/P2Dist x=[(b/a-0.0875)/(1+b/a*0.0875),(b/a+0.0875)/(1-b/a*0.0875)]
という感じになって非常に面倒臭いと思うよ
だから2/3倍と3/2倍みたいな感じの妥協案を出したんだけど
今思ったら角度に振れ幅持たせなくても軸座標に振れ幅持たせるだけでいいね
あと、発射角度が4種類だけなら場合分けすれば複雑な計算式要らない気もする
軸座標を含めて計算させるのであれば
先程の式に座標(β,γ)を混ぜてP2Distの値が変化するように
P2Dist X-β
P2Dist Y-γで、計算させれば良いということになる…のでしょうか?
実際のトリガーは
triggerAll = P2Dist X > 0
triggerAll = Facing!=EnemyNear,Facing
trigger1 =(P2Dist Y-γ+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-β+EnemyNear,Vel X*4)*b
trigger2 =(P2Dist Y-(γ-1)+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-(β-1)+EnemyNear,Vel X*4)*b
trigger3 =(P2Dist Y-(γ-2)+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-(β-2)+EnemyNear,Vel X*4)*b
:
:
:
trigger10=(P2Dist Y-(γ+1)+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-(β+1)+EnemyNear,Vel X*4)*b
trigger11=(P2Dist Y-(γ+2)+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-(β+2)+EnemyNear,Vel X*4)*b
trigger12=(P2Dist Y-(γ+3)+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X-(β+3)+EnemyNear,Vel X*4)*b
:
:
:
これでいいのかな?
長い上に効率悪い表記の気もしますけど…
軸座標というには語弊があるけど
(P2Dist Y+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a=(P2Dist X+EnemyNear,Vel X*4)*bの右辺を移項して
(P2Dist Y+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a-(P2Dist X+EnemyNear,Vel X*4)*bの値が特定の範囲内をとる時成立、すまり
(P2Dist Y+EnemyNear,Vel Y*4+EnemyNear,Const(Movement.yaccel)*4*4/2)*a-(P2Dist X+EnemyNear,Vel X*4)*b=[-40,40]みたいにするってこと
いくらトリガー増やしたって単純な等号で指定してる限り殆ど成立しないと思うよ、>>542 みたいな記述だとね
Trigger1 = Vel x = -2
Trigger2 = Vel x = -1
Trigger3 = Vel x = 0
Trigger4 = Vel x = 1
Trigger5 = Vel x = 2
みたいに設定してるようなもんだからVel xが1.5でも成立しないし-0.4でも成立しない
>>539 や>>541 で言いたかったのは[,]とか(,)とか[,)とか(,]を使わないとAIは一向に技出してくれないよって話
厳密に計算したいんだったらP2Dist yとP2Dist xそれぞれに幅を持たせるべきなんだろうけど
相手の動きも単調じゃないし喰らい判定も多様だから
厳密に計算したって当たらないときは当たらないし労力に見合う出来は期待できないと思う
あ、そっか
単純に算数で考えればよかったんですね。
[,]の範囲指定は知っていたんですけど、この記述に用いるとこで躓いてました;
基本の理屈は掴めたので後は実機で試しつつ組んでみようと思います。
ありがとうございました!
ストライカー召還記述についての質問です。
本体がストライカー召還技を発動
ストライカーの種別判断としてVarSet&演出用の親ヘルパーを召還
↓
親ヘルパーが演出用の兄ヘルパーを召還
兄ヘルパーは「本体のVarを参照」して自身のアニメを設定
↓
兄ヘルパーが39F目で演出を終えて消滅
親ヘルパーは39F目に「本体のVarを参照」してストライカーの役割を担う弟ヘルパーを召還
親ヘルパーも40F目で消滅
↓
弟ヘルパーがストライカーとして行動する。
ざっくりと書くとこういった流れで動くストライカー召還技が存在します。
この方式の場合、親ヘルパーを召還してから「弟ヘルパー」が召還されるまでの40Fの間に親が更に別のストライカーを召還しようとすると
本体のVarが上書きされてしまうために兄ヘルパーと弟ヘルパーのアニメが違うものになってしまいます。
そこで、複数体同時に召還することも出来るような処理に変えたいのですが、解決策として現状浮かんでいるのが
[親ヘルパーが本体のVarを自身のVarに記憶し、兄ヘルパーのアニメと弟ヘルパーの召還にそれを用いる]というものです。
[1.]この方法以外に良い方法はないものか?
[2.]IDとStateNoの同じヘルパーは変数を共有するのか?(←そもそもヘルパーの変数がどういった扱いなのか理解できていない)
[3.]「0〜40で順番にVarを使って行き、40まで使ったら再び0からVarを使う」というVarSetの記述はどうすればよいのか?
以上3点について、お聞きしたいです。
御存知の方はご教授いただけますよう、お願い申し上げます。
>>545
[1.]
演出アニメもストライカー別にあるのなら親兄弟ではなく1つにしたほうが楽かもしれません
・本体が直接ストライカーを生成(出現は画面外でいいのかな?)
・ストライカーが自分用の演出アニメを本体の位置に描画
・40F経過したら普通にストライカーとしての動き
[2.]
確認していませんがおそらく「変数はヘルパーそれぞれが独立保持」だと思います
変数で速度等を保持している飛び道具もありますし。
質問で言っているIDはおそらくHelperIDであり、それとは別にPlayerIDというのも自動で割り振られますので
それを用いて内部処理しているものと思われます。
[3.]
例:0〜40のうち現在使っている番号をvar(41)で保持する
[state 1000, A]
type = varset
trigger1 = time = 0;■
v = var(41)
value = 入れたい値
[state 1000, B]
type = varset
trigger1 = time = 0;■
var(41) = (var(41) + 1) % 41
トリガーのまったく同じ2つのvarsetを用意
ラベルAのvarsetでvar(41)のvalue番号のvarに「入れたい値」が入ります
その後にvar(41)を1加算し、40をオーバーしているのなら0に戻します
まず、[2.]だけど
本体やヘルパーには個別にメモリ領域が割り当てられていて、本体は固定だけどヘルパーは生成時に割り当てられる。
そして変数は各個体のメモリ領域で管理してるからVarの共有は一切ない。
Helperステコンのパラメータで設定したIDが同じでも、実行中のStateNoが同じでも、別々のヘルパーであれば別々に変数管理している。
[3.]は例えば
Varに格納したい数値が3桁の場合だったら
[State ]
Type = VarSet
TriggerAll = Var(39)-Var(39)%1000!=Var(40)-Var(40)%1000
Trigger1 = 条件
V = 40
Value = Var(39)-Var(39)%1000+数値
:
:
[State ]
Type = VarSet
TriggerAll = Var(0)-Var(0)%1000!=Var(1)-Var(1)%1000
Trigger1 = 条件
V = 1
Value = Var(0)-Var(0)%1000+数値
[State ]
Type = VarSet
TriggerAll = Var(40)-Var(40)%1000=Var(0)-Var(0)%1000
Trigger1 = 条件
V = 0
Value = 1000-(Var(40)-Var(40)%1000)+数値
ってやれば千の位が0か1かで次に使うべきVarを判定しながら使える
Var(0)だけTriggerAllとValueの式が他と異なるから注意
あと、各Varを読むときも「Var(0)%1000」のように読まないといけない
[1.]についてはないんじゃないかな
まあ親ヘルパーのVarの代わりに親ヘルパーのSize.HeightやSize.Air.Backなどを使ってもいいと思うけど
あ、[1.]はストライカー召喚全体の流れに関してか…
それなら>>546 の言う通り1つのヘルパーで纏めてやった方がいいと思う
どうにかなりそうです! ありがとうございました!
リザレクションを作っているのですが…
どうしてもラウンドが終わってしまいます
どうしたらいいでしょうか?
[State -2, SelfState]
type = selfstate
triggerall = life <= 0 || gethitvar(damage) >= life
triggerall = life != 0
triggerall = alive
trigger1 = StateType = L
trigger1 = power >= 5000
Trigger1 = Var(0) = 0
Trigger1 = Var(0) := 1
value = 4010
ignorehitpause = 1
すいません自己解決しました…
技術と呼べる質問ではないのですが、攻撃の弱中強の
ダメージ量の差はどれくらいが適正なんでしょうか?
性能次第だと思います
個人的にはコマンド技がゴミになるような具合でなければ優先度だけ変えて威力同じでもいいんじゃないかと
あとは弱<中<強の順で補正緩くしたり…
すみません、骨組みをする時の棒人間ってどうやって書くんですか?
自キャラ用にAC北斗の死兆星カットインを作りたいんですが
あぁいう感じの「淵だけ赤っぽくフェード(?)させる」みたいな加工って、どうやるんでしょうか?
俺は普通に絵①を描いて、
赤のグラデかけた同サイズの絵②を別途用意して、
青緑のグラデかけた同サイズの絵③も別途用意して、
①に③をRGB減算で合成したあとで②をRGB加算して作った。
RGB減算やRGB加算は自分で簡単なプログラム組んだからツールとかは把握してない
ぐはぁっ(吐血)
ぜんぜんわからないw
でも、プログラム組みできない&edgeの表層程度しか弄れない人は論外と言うことはわかりました。
いや、絵描きソフトを使いこなせないから>>556 みたいな回りくどいことしてるだけで
PCで絵を描くことに精通してる人に聞いたら簡単にできるかもしれないよ
いつもcns関連の質問に答えてるけど絵は詳しくないから>>554 にも答えられないし
>>555 のは自分でやったことあるから参考程度に我流の方法を紹介してみたんだけど…スマヌ
そうなんですか…
フリーソフトでマニュアル読めばわかる程度の方法で作る手段ってないものかorz
ありがとうございました
ttp://loda.jp/kyouakuuuu/?id=952
久々にみやかか更新。新技追加(どらいぶ派生aボタン)で固めもできるようになった?これで前より積極的に動けるようになったはず。
ってスレ間違えたorz
シューティング魔理沙改変でスターダストを作ってるのですが新たに追加した飛び道具が攻撃判定がついているにもかかわらず相手を透過してしまいます。
問題があれば教えてください
;シューティング・エア
[Statedef 400]
type = S
movetype= A
physics = N
poweradd= -2000
velset = 0,0
anim = 0
ctrl = 0
sprpriority = 0
;------------------------------------
[State 400, 飛び道具];HitDefに飛び道具専用のパラメータを加えたようなものが「Projectile」
type = Projectile
trigger1 = AnimElem = 4
attr = S, SA ;立ち必殺飛び道具(Standing, Special Projectile)
damage = Ceil(0.01*enemynear,Const(data.life)),Ceil(0.001*enemynear,Const(data.life))
getpower = 0,0
animtype = Medium
pausetime = 0,6
;-----------------------------------Projectile専用のパラメータ
offset = 93,-26 ;飛び道具を発射する位置(X軸,Y軸)
velocity = 7,0 ;飛び道具の移動速度(X軸,Y軸)
accel = 0.5,0 ;飛び道具の加速度(float)(X軸,Y軸)
projID = 1000 ;飛び道具のIDナンバー(NumProjIDなどで判断)
projanim = 420 ;飛び道具のアニメ(アクションナンバー)
projhitanim = 420 ;飛び道具がヒットした時のアニメ(アクションナンバー)
projremanim = 420 ;飛び道具が消える時のアニメ(アクションナンバー)
projscale = 0.7,0.45 ;飛び道具の大きさ(X軸,Y軸)
projshadow = 0,0,0 ;飛び道具の影の色合い(赤,緑,青)※現在影無し
projhits = 10 ;飛び道具のヒット数(2以上なら多段ヒットになる)
projmisstime = 1 ;飛び道具の連続でヒットしない間隔 ※projhitsが2以上の時のみ
projpriority = 7 ;飛び道具の攻撃優先度・相手のProjectileよりも高いと消しながら進む
projremovetime = 9999 ;飛び道具の消えるまでの時間(フレーム)※-1なら当たるか画面外に出るまで消えない
;-----------------------------------
guardflag = MA
priority = 3
sparkno = -1
sparkxy = 0,0
guard.sparkno = 40
;hitsound = 5,3
;guardsound = 6,0
ground.type = High
ground.slidetime = 6
ground.hittime = 12
ground.velocity = -6,0
air.velocity = -3,-4
air.juggle = 4 ;Projectileの場合はここで設定しないとヒットした時ジャグルが消費しない
envshake.time = 8
envshake.ampl = 6
envshake.freq = 100
;-----------------------------------------------------
[State 400, ステート変更]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1
HitFlagはどうなってる?省略してる?
あと気になる点として
・EnemyNear,Const(Data.Life)よりEnemyNear,LifeMaxの方がタッグ補正とかも考慮して取得できるから後者をお勧めする
・ProjHitAnimを設定してるってことはヒットする度に420番を1枚目から読み込み直すけど良いの?
・省略可能な部分が多いからmugen\docs\sctrls.html見て整理した方が良い
>blank さん
HitFlag設定しても無理だったので他のヘルパーで攻撃する記述に似せたら解決しました。
EnemyNear,LifeMax>ありがとうございます
ヒットアニメ>修正しました
CNSについてこれから勉強していこうとしています
それで [type = Projectile] のProjectileのようなコマンド?
について知りたいんですがどこかサイトとか知っていませんか?
自分で探してもいるんですがわかりません
よろしくお願いいたします
基本的にステコンの説明は「Mugen」フォルダの「docs」フォルダの「sctrls.html」に書いてある
トリガーの説明は「Mugen」フォルダの「docs」フォルダの「trigger.html」ね
英語が苦手なら「Mugen ステート」あたりでググれば日本語の解説サイトが一発で出てくる筈だけど
>566 blankさん
ありがとうございます
これから見に行ってみようと思います!
基本的な質問で申し訳ありません。
同じ攻撃モーションの中に複数ヒットさせる技を作っていますが
ステート内に「HitDef」を複数用意しても、実際に攻撃するのは
単発のみになってしまいます。(最後に記述しているhitdefのみが呼ばれていました)
airファイルには各スプライトにClsn1は設定していますが、やはり単発のみで終わります。
これを複数ヒットさせるためにはどうすればよいでしょうか?
HitDefは一度実行したらステートが変わるか、別のHitDef/ReversalDefで上書きしない限りアクティブだから
単純に複数書いたって上書きされて最後のだけが有効になる
やるなら
[State ]
Type = HitDef
Trigger1 = AnimElemNo(0) = 2
(略)
[State ]
Type = HitDef
Trigger1 = AnimElemNo(0) = 4
(略)
みたいに実行タイミングの違うHitDefを複数用意するか
[State ]
Type = HitDef
Trigger1 = 1
(略)
Persistent = 4
みたいに連続実行防止のPersistentを設定するか
[State ]
Type = HitDef
Trigger1 = !MoveContact && !MoveReversed
(略)
[State ]
Type = MoveHitReset
Trigger1 = MoveContact > 3
みたいにMoveHitを初期化することでHitDefのTriggerを再度満たすようにするか
1ヒット目と2ヒット目のダメージやノックバックが違うなら一番上のやり方が楽で、パラメータが全く同じなら二番目が楽かな
ただ、PersistentはAnimの進み具合で判定してるから途中に表示時間が-1のスプライトが入ってると機能しないから注意
>569 blank様
無事に多段ヒットさせることができました!
丁寧な解説まで教えていただきましてありがとうございます!
本当に助かりました
現在、金属の回転ノコギリのドットを打っているのですが、
形にはなったのですが、金属感を出すようなドットは今まで打ったことが無かったので、
イマイチ上手く打てません。
現物の写真見ながらやってるんですがどうも上手くいきません。
何か参考になるようなドット絵持ってるキャラはいないでしょうか?
ザベルの攻撃にそれっぽいのが有ったような無かったような。
金属のドットってだけならサイバーボッツを見るといいかも
>>572
そう言えばザベルはそうでしたね。すっかり忘れてました。
ありがとうございます。参考にさしてもらいます。
すみません質問させていただきます
キャラ改変の定義ってどのぐらいでしょうか?
一箇所でも性能を変えれば改変、AI付けても改変、Life/Defence/Attackを変えても改変、ようするに何処弄っても改変だよ
「改変しなければAIパッチ作成可」のいう改変は一般的には性能(発生、キャンセル、アーマーなど)改変のこと
ものすごく初歩的で申し訳ない。
sffにニュートラルを登録し始めたばかりですが、
airファイルに登録してMUGENで動作を見たら、
1番目に登録した画像だけが黒く表示されてしまい、
これだけどうにもならない状態です。
この画像を消せば黒いキャラは消えるので問題はなくなるのですが、
使えないとなると予定外。
パレット情報を読み取って他の画像も同様に作ったのにこれだけが正常じゃなくなります。
はじめからやり直してもダメなもので困りました。
何か解決策ないですかね?
ちなみにパレット共有化なしでやってます。
編集ツールは何?
ツールによっては最初に登録したスプライトをパレット基準にしたりする
シルエットみたいな表示ならActが適用されてないと思うからそっちの確認も必要
>>575
ありがとうございます!
>>577
表示はシルエット上ですね。
フォトショップエレメンツでやってます。
Padieで減色、EDGEでパレット背景色を左上に移動、
その後フォトショップエレメンツで適用、です。
1回は正常になったんですがね。うまくいきません。
諦めて別に追加するか…。
連投スマン
mcmでやってるが、actが適用されてないのかも
原因分からんです…。なんでだろう
・ツールを変える
MCMはぶっちゃけ古いツールなので、SAEみたいなGUI要素の強いソフト使うべき
「できることが多い、見やすい、使いやすい、わかりやすい」ので、初心者がMCM使う理由はないから
・9000-0と0-0のパレットを同じにする。
加えて両方とも共有チェックは外しておくこと
これ両方やってみるべき
MCMに固執してた自分。頭が固すぎだな
SAEでやってみます。ちょっと調べてみよう
明日から進める気がする!
前からここの板に投稿したいと思ってはいるのですが、
お絵描きソフトで描いて減色したやつなんで、厳密にはドット打ってない絵
なのでここの板に投稿するのは気が引けます
こういう人ってあんまりいないですよね
>>582
大丈夫ですよ。
投稿してください。
ダミーで最初に登録する画像を別のものでやってみたら正常に表示されました
SAEも扱いやすく、使い勝手はいいです
ありがとうございました
>>Yes管理人殿
ありがたく投稿させていただきます
1枚絵か出来たらgif形式で
>ダミーで最初に〜
SAEとかSAMみたいな新しいツールならそんなことする必要ないぞ
結局MCMでやってんの?
MCM使うならキャラ画像は全て連続で登録しなきゃダメ
間に違うパレットの画像挟んじゃいけない
だから新しく技を増やしたいときに困る(大部分を登録し直す)ことになる
MCMでの色化けのしくみなら
"mugenの世界"の「Win版での色化け対策というか」がとても分かりやすいです。
参考にしてみては如何でしょうか。
ヘルパーを使った飛び道具を作りたいんですが、
検索してもイマイチよくわからないので、教えていただきたいです。
Helperで本体が使ってないStateNoを指定する
指定したステートでVelSet/VelAddを使って飛び道具の軌道を設定する
攻撃は本体と同じように「Clsn1のあるAnim、MoveType=A、HitDef」の3点セットで行う
(本体の飛び道具発射ステート)
[StateDef 200]
Type = S
MoveType = A
Physics = S
VelSet = 0,0
Anim = 200
[State ]
Type = Helper
Trigger1 = Time = 4
StateNo = 201
[State ]
Type = ChangeState
Trigger1 = AnimTime = 0
Value = 0
Ctrl = 1
(飛び道具ヘルパーのステート)
[StateDef 201]
MoveType = A
Physics = N
VelSet = 1,0
Anim = 201
[State ]
Type = HitDef
Trigger1 = !MoveContact
Attr = S, NP
HitFlag = MAF
GuardFlag = MA
Damage = 20,4
Type = DestroySelf
Trigger1 = !MoveContact
Trigger1 = Time > 20
Trigger2 = MoveContact
基本構造としてはこんな感じ
このままだとヒット数継続しないけど、まずは基本を理解するのが先決
慣れてきてからヒット数継続するように工夫を入れればいい
AI記述について質問です。
[1.]画面上に飛び道具が特定数以上ある
[2.]相手が投げ属性以外の攻撃をしてくる
[3.]攻撃判定が8F後に発生する(8F後より発生する無敵を使いたい)
これらを判断させる方法はありますか?
存在するのであれば具体的な記述と、その意味について教えて頂きたいです。
>>589
うろ覚えなんで嘘ついてたらスミマセン
>[1.]画面上に飛び道具が特定数以上ある
NumProj かなんかのトリガーを相手にリダイレクトして使えばprojの数はわかりますが、
よく使われているhelper型の飛び道具の数はわかりません。
NumHelperのトリガーを使えばHelperの数はわかりますが、そのhelperがシステムヘルパーなのか
攻撃用のトリガーなのか判断つかないため、正確に数を把握する場合、かなり難しい事をしないといけないと思います。
>[2.]相手が投げ属性以外の攻撃をしてくる
HitDefAttrのトリガーを相手にリダイレクトすれば判断できるはずですが、
HitDefAttrのトリガーはhitdefが発生してからしか判断つかないため、
この条件が成立してから反応しても間に合わない事が多いと思います。
>[3.]攻撃判定が8F後に発生する(8F後より発生する無敵を使いたい)
これを判断するトリガーはないはずです…。
2と3についてですが、AIに学習機能を持たせる事で判断をつける事は可能ですが、
これまたかなり大変な事をしないといけません…。
MUGENの仕様なのか記述ミスなのか判断つかない事があったので
相談させてください。
プレイヤー型のヘルパーを多数出現させているのですが、(夫氏のチビすいかみたいなイメージです)
対戦相手側の攻撃が一度に最大9匹までにしか当たりません。
MUGENで1つの攻撃は最大9体までにしか当たらないとかいう仕様があったりするのでしょうか?
>590
ありがとうございます!
STGの飛び道具用のヘルパーに残像をつけたいのですが働いてくれません。常時監視の-2にstatenoやanimで指定しても無理でした。助けてください
[Statedef 442];---------------------------------------------------------------------------------------------------------------------------------------------F2↓
type = S ;キャラの状態を指定(S=立ち・C=しゃがみ・A=空中・L=横に倒れている・U=前のステートの状態を引き継ぐ)
movetype = A ;キャラの行動内容を指定(I=何もしない・A=攻撃している・H=攻撃を食らっている)
physics = N ;キャラの物理的な体勢(S=立ち・C=しゃがみ・A=空中・N=重力や摩擦の影響を受けない・U=前のステートの体勢を引き継ぐ)
juggle = 0 ;攻撃を当てた時に溜まるジャグルポイントの設定
ctrl = 0 ;コントロールの可否(0=キー操作不可・1=キー操作可能)
poweradd = 0 ;パワーゲージの増加量を設定
velset = 3.5,1.5
anim = 440
sprpriority = 1 ;画像表示優先度 数値が多いと手前に、少ないと奥に優先されます
[State 440, 2];ビーム透過
type = Trans
trigger1 = 1
trans = addalpha
alpha = 256,100
[State 440, 2];角度
type = angledraw
trigger1 = 1
value = 330
[State 440, 2];残像------------------------------------------------------------------------------------------
type = AfterImage
trigger1 = 1
time = -1
length = 20
palcolor = 256
palinvertall = 0
palbright = 30,30,30
palcontrast = 120,120,220
palpostbright = 0,0,0
paladd = 10,10,25
palmul = .65,.65,.75
timegap = 1
framegap = 3
trans = add
[State 440, 2];殴られないように
type = NotHitBy
trigger1 = 1
value = SCA,AT,AP,AA
time = 1
[State 440, 2];当身対策
type = HitOverride
trigger1 = 1
attr = SCA,AA,AT,AP
slot = 0
stateno = 1;汎用Destroyselfステート
time = 1
[State 440,hitdef]
type = hitdef
trigger1 = time = 0
attr = S, SP ;攻撃属性: これは Standing, Normal Attack(立ち通常攻撃)
damage = 8, 1 ;相手に与えるダメージ(ヒットした時,ガードされた時)
・・・・・・・・・・・・・・・
・・・・・・・・・・
・・・・・
・・
>>588
間が空いてしまいましたが、ありがとうございます!
>>593
AfterImage のトリガーが Trigger1 = 1 になってるせいでは?
不都合がなければ Trigger1 = Time = 0 とかにしてみるといいかも
>wolfさん
ちゃんと表示されました。ありがとうございます!
[Statedef 5000]
type = A
movetype= A
physics = A
juggle = 4
poweradd= -1000
ctrl = 0
velset = 0,0
anim = 4000
sprpriority = 2
[state 5000,速度設定]
type = VelSet ;速度設定
trigger1 = Animelem = 2
x = 12
y = 8
[State 5000, 背景アンテン]
type = envcolor
trigger1 = AnimElem = 1
value = 0,0,0
time = 44
under = 1
[State 5000, エフェクト画像]
type = Explod
trigger1 = AnimElem = 1
anim = -40000
pos = 80,120
postype = back
sprpriority = -5
ownpal = 1
ontop = 1
removetime = 44
supermove = 1
scale = 0.5, 0.5
[State 3050, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = AnimElem = 1
postype = left
pos = 20, -80
time = 44
anim = s30000
sound = 20, 0
[State 1000, エフェクト画像]
type = Explod
trigger1 = AnimElem = 2
anim = 4005
pos = 50,0
postype = p1
sprpriority = -5
ownpal = 1
ontop = 1
removetime = 32
supermove = 1
scale = 2, 2
この記述があって、攻撃を受けると技が発動してしまうんですが、
色々ためしましたが原因が分からないので、何方かに助けていただきたいですorz
そりゃ5000番は「立ち喰らい」ステートだからね
StateType=SのときにFall=0の攻撃受ければ内部処理で5000番に飛ぶようになってるんだよ
番号飛び飛びだけど5000番台は基本的に喰らいステートだから
技ステートは5000番台を避けた方が良い
>>597
commonの地上喰らいステートとステ被りしています。
commonステートと被らない番号にStatedefを変更してください。
>>598
>>599
ありがとうございました!お陰で暴発しなくなりました。
5000番台は食らいステート、分かってたはずなのに気付きませんでしたorz
上記の質問とは全く違うんですが、
エフェクトを均等に配置するいい方法はないでしょうか?
イメージはロックマンのティウンティウンのエフェクトなんですが、
どうしても綺麗に配置ができなくて見栄えが悪くなってしうので…。
八つ配置したいなら
Pos = 5*Cos(Pi*0/4),-30+5*Sin(Pi*0/4)
Pos = 5*Cos(Pi*1/4),-30+5*Sin(Pi*1/4)
Pos = 5*Cos(Pi*2/4),-30+5*Sin(Pi*2/4)
Pos = 5*Cos(Pi*3/4),-30+5*Sin(Pi*3/4)
Pos = 5*Cos(Pi*4/4),-30+5*Sin(Pi*4/4)
Pos = 5*Cos(Pi*5/4),-30+5*Sin(Pi*5/4)
Pos = 5*Cos(Pi*6/4),-30+5*Sin(Pi*6/4)
Pos = 5*Cos(Pi*7/4),-30+5*Sin(Pi*7/4)
でそれぞれのExplod等を出せばAxisから30ドット上空の座標を中心に半径5ドットの同心円上に配置できる
30とか5は適当な値に変えて、括弧内の分母は配置したい数の半分の値(上の例では八つだから4)
エラメが気になるならx成分、y成分それぞれをCeilかFloorで囲えばおk
あとはVelocityも同様にCosとSin使えばティウンティウンっぽく等拡散もできる
描いたキャラをためしにMUGENに入れてみたんですが
9枚中最初の一枚だけ黒く表示されるんですがどうすればいいんでしょうか?
無限中学に載っている通りにやっただけに他に良い方法が思いつきません
ちなみに教材用カンフーマンの上から上書きしてます
>>576-586 参照
中学校見てるならMCMだろうし同じ状況な筈
>>603
9000番を一番後ろにしても治らないです
元あるKFMの画像→描いた立ち絵→9000番の順をバージョン1,3のMCMでしても治らず
SAEでも上と似たような事をしても治らず
何か抜けているのでしょうか
>>604
状況がよく分からないので確認
1.9枚の画像はパレット共有化してますか?
2.共有化している場合、パレット統合(パレット色の並び替え)はしてますか?
3.教材用カンフーマンのスプライトは 削除→新規登録してますか? それとも差し替えしてますか?
4."9000番を一番後ろにした" これは登録した順番(一番最後に登録作業した)の事? それとも登録してる番号の事?
5.ACTファイルは作成してますか? もしくは教材用カンフーマンのデータを使用してますか?
actファイルは自分で描いた絵に合わせて用意した?
KFMは1番〜239番が0,0,0だからそれ読ませてたら大抵シルエットになる
>>605
1えーと、中学のWINMUGENの説明通りにやっているので自己パレットになっているかと
2EDGEで並び替えて要らない色は全部消してます
3削除してから登録してます
4グループ9000番の大ポトレを一番後ろに行くように登録作業をした事ですね
5ACTファイルが何なのかわかりませんがたぶん何も触ってませんからそのままかと
>>606
そうなんですか?それが原因なんでしょうか
1番とか0,0,0がどんな意味なのかわかりませんが…では何故全部じゃなく一枚目だけシルエットになるんでしょうか?
参考にしてるのはMUGEN中学校の練習用アテナの登録してるページかな?
ここでまず前提として知ってほしいのは、このやり方はSFFを新規に作成する場合の方法で、KFM等の改変を前提としてないという事。そしてこのやり方では共有パレットを使用していないという事。
1.actファイルとは何か知る。
actファイルは、色のパレット管理のデータです。共有パレットを設定した場合、このactファイルを読み込んでMUGEN上で表示されます。(MUGEN中学校の説明では、共有パレットを使用しないやり方を紹介している為、ここらへんの説明がありません。勿論教材用KFMは共有パレットを用いています。)
2.actファイルを作る。
MCMを使用している場合、共有化させたいスプライトを表示させた状態で【SFF】のタグから【パレットの保存】を選択することでactファイルが作成されます。
3.actファイルを反映させる。
defファイルを開き(KFMの場合kfm.def) " pal1=■■■.act "の文字を探す。
■■■の部分に、"2"で作成したACTファイルの名前を記入。
再びMCMに戻り、【SFF】のタグから【パレットの変更】で"2"で作成したファイルを選択する。
パレットの統合作業は理解しているようなので省略します。
MCMの表示で、自分の登録した画像がうまく表示され、KFMの画像が色化けを起こせば成功です。
これで解決… かとおもいきや、多分mugen上ではまだ解決しません。
【次回につづく】
補足 (抜けてた…)
パレットの共有化をする場合は、スプライトの登録で【共有】にチェックを入れてくださいね。(日本語化してない場合はSharedにチェック)
ちなみにMUGEN中学校の説明では自己パレットを使用するのでチェックは外すようになってるはずです。
【続き】
バグなのか仕様なのか分かりませんが、mugenでは【共有化したパレット画像は連続して登録しなければならない】という縛りがあります。
※ツールによってはこれを抜け出せる機能有り。
この状況を詳しく説明したサイト
ttp://www.ne.jp/asahi/home/raiwa/Game/Mugen/Diary/041005.htm
つまり、KFMのデータを改変するならば、KFMのスプライトを差し替えですり返れば問題ないが、一度削除してから新規で登録しなおすと、【スプライト番号に関わらず】色化けします。(´□`)ガーン
これを直すには、KFMの登録されているスプライトのうち、共有化してないものを一度全て削除して、共有化したものを全て登録した後に登録をし直すか、逆に共有化しているスプライトを一度全て削除してから登録しなおすかする必要があります。
はい、現実的なやりかたではありません……。
おとなしくSAEやSAM等の新しいツールを使用したほうがいいかもしれません。
また、FFには物理的並び替えを行う機能もあるようです。
一応、先人たちの苦労した解決方法等のってるサイトを紹介
ttp://www.geocities.jp/mtv_009w/mdata.html
■■■以下抜粋■■■
共有パレットの画像は今まで通り先に登録する。
(9000,0は1番目、9000,1は2番目、これは常識)
独自パレットで登録する画像 を まとめて共有減色する。
(複数のグループに分けて共有減色しても良い)
共有減色した画像を1枚だけ独自パレットで登録し、
残りはその後ろに共有パレットで登録する。
(グループ分けした場合、ここを繰り返す)
■■■抜粋終了■■■
っとここまで説明して何だが、>>604 の問題は別のところにあるような気がしてきた…。
よく考えたら、今回登録してある画像が全て"独自パレットのみ"であるなら、基本的に色化けはしない。だが、【0.0番】お前だけは駄目だ! (何w
何故かというと、0,0番は強制的に9000,0番(小ポートレイト)の画像と同じパレットに統一されてしまうため。
解決法は、0,0番にキャラの画像はおかない。これが一番てっとりばやい。
>>608
MCMで一枚目でACTファイルを作って反映させてみたら
正常に表示されました。
ありがとうございます。
ちなみにdefファイルに記入したあとにMCMでパレットの変更をするの作業にはどういった意味があったのでしょうか?
特に何か変わったわけではなかったので
>>608
defファイルは、MUGEN上でのカラーを選択するものです。
MCMでのパレット変更は、MCM内での表示を正常に表記するもの。
確か、なにもしてなければ一枚目の画像が勝手に反映するんだっけ(曖昧)
2P以降のカラーをMCM内で表示させたい場合は、またここでパレットの変更を行う必要がある。
何はともあれ解決したようでよかった。
SFFは画像データとパレットデータの集合体
MCMでAから順に画像を登録していくと、パレットを共有しない場合(①)は
Aのパレット→Aの画像→Bのパレット→Bの画像→Cのパレット→…
という形でSFF内に保存されてる。
A〜Cのパレットを共有していてD以降のパレットを共有していない場合(②)は
Aのパレット→Aの画像→Bの画像→Cの画像→Dのパレット→Dの画像→Eのパレット→…
という形でSFF内に保存されていて、BとCはAのパレットを読み込むようになる。
一方、Zから順に画像を登録していくと全てパレットを共有してる場合(③)は
Zのパレット→Zの画像→Yの画像→Xの画像→…
という形でSFF内に保存されているけど、MCM2.0ではAの画像→Bの画像の順に表示される。
MCM1.3では実際に登録されている順番通りに表示される。
ここで、MUGEN上では一番最初のパレットをactファイルのパレットに差し替えることで1P〜12Pのカラーリングを表示してる。
だから①だとAのみにactが適用され、②だとA〜Cに、③だとA〜Z全てに適用される。
actファイルは番号と色の対応表
0番は透過色で、MUGEN上では必ず透過される。
1番〜255番は色情報を格納できて、0,0,0なら黒、255,0,0なら真っ赤、0,255,0なら緑、0,0,255なら真っ青、255,255,255なら真っ白
255,0,255なら紫、とまあこの辺は「RGB」とか「光の三原色」とかでググったら分かるんじゃないかな。
で、KFMの場合は1番〜239番が0,0,0つまり黒で、240番〜255番には実際にKFMを表示するための色が格納されてる。
画像は座標と番号の対応+番号と色の対応表で
『1番…白、2番…赤』
111111111111111
111111222111111
111112222211111
111111222111111
111111111111111
で日の丸の画像を作ったとしても、KFMのSFFに登録してMUGEN上で表示されるのは
KFMのactである『1番…黒、2番…黒』を読んだ結果、黒い長方形になる
こんな文章で伝わるか分からんが、>>607 への回答。
あと、注意点としてはMCMでAから順に登録していってD以外を全てパレット共有にした場合は
A〜CはAのパレット、DはDのパレット、E〜ZはEのパレットをそれぞれ読む(E以降がAのパレットを読むことはない)。
だからact読ませてもA〜Cには適用されるけどE以降には適用されない。
キャラ画像登録して(A〜C)エフェクト登録して(D)新しく技を追加しようとキャラ画像追加登録する(E)とかの時に
「Dを消してEを追加登録してDを再登録する」という面倒臭いからMCMはお勧めしない。
あと、①と②を比べれば分かるけど、②にはBのパレットとCのパレットが無い分SFFの容量が軽くなるし
MUGEN上でのアニメーションで画像をAからBに切り替える時も①だとパレットを一々読み込み直すから②の方が処理もスムーズ
なるべく独自パレットを減らすように心掛けるといい
すいません、アニメ投稿するにはどうしたら…
GIFに変換したまでは良かったんですけど、その先が
一番上に
|HOME |更新 |返信順 |カタログ |文章/画像投稿 |削除 |編集 |管理 |設定| ▼
と並んでるところの「文章/画像投稿」をクリック
>>616
書き方が悪かったですね…すいません
GIFに一枚一枚個別に変換したんですけど、繋げ方がわからんのです
ragtimeさんはどのソフトをつかっているんですか?
それがわかったほうが他の方が使い方を教えやすいと思いますよん
GraphicsGaleを使ってます
製品版じゃないですが…
私はEDGEなんで力になれないのですが
GraphicsGaleを使われている方で、どなたか教えてあげてくださいな。
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板