レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
長方形の画像をひし形に「斜めに歪める」ツールってあるのでしょうか?
__
| |
 ̄ ̄
↓
_
/ /
 ̄
こんな感じに…回転ではなく角度をつけて歪めるイメージなんですけど…
一応ペイントでできる
確認しました、ありがとうございます!
常時監視でattackmulsetを複数使いたいのですが
複数のattackmulsetの条件が一致したときに効果を重複させるにはどうすればいいでしょうか?
例えば1つの条件で攻撃力1.5倍、もう1つの違う条件で攻撃力1.5倍
2つとも条件が一致したときに1.5×1.5で2.25倍になるようにしたいです。
それぞれ常時監視に書いただけでは重複されませんでした。
attackmulsetをvalue = var(?)にしておいて
var(?)を弄繰り回す。
効果を重複させるのは‥‥
無理だったような‥
‥
気がします。
一応言っとくとVar→FVarだね
FVar余ってるならFVar2つ使ってFVar(1)*FVar(2)みたいにするのが楽
片方だけ条件満たしてない時は対応するFVarを1にしとくだけでいいし
>>486
>>487
仰る通りにしたらできました。
ありがとうございます。
ヘルパーにダメージ補正をつけたいと思い常時監視にあるコンボ補正の数値を別のFVarに格納して
ヘルパーのHitDefのdamageに
damage = 元の数値*root,FVar(補正値)と記述したのですが
FVar(補正値)の値がヘルパーを出したときのコンボ数から変わらなくて困っています。
例えば10ヒット中にこのヘルパーを出してコンボが終わった後にヒットしても10ヒットした時のままの補正値になってしまいます。
FVar(補正値)を現在のヒット数にあわせてリアルタイムに変化させる方法はありますでしょうか?
HitDefのTriggerを!MoveContact&&!MoveReversedにする
HitDefは実行したら当たる(ガード・当て身含む)か別のHitDefまたはReversalDefで上書きしない限り有効なんだけど
パラメータに変数使っても実行したときの値で計算されてるから
Trigger1 = Time = 0みたいな実行の仕方だとTime = 0のときにパラメータの値が確定して
Time = 6に当たろうがTime = 9999に当たろうが上書きしない限りはTime = 0のときに計算した値で処理される
P2Nameによる特殊演出を仕込みたいんですけど対象となるキャラが複数体存在しており、公開停止になってるわけではないけど海外製作者だったり色々でデータが入手できないキャラがいます。
「演出発生しなかったよ!」って報告貰わない限りOKって考え方もアリでしょうけど、そもそも公開後に報告来ることも稀ですし…製作者として責任持って設定しておきたいところ。
この手の問題ってキャラ製作してると結構頻発しそうなもんですけど、皆さんはどう解決されているのでしょうか?
…P2Nameの一覧みたいなの公開してるサイトとか無いんでしょかね?
P2Nameの一覧サイトは知らんけどP2Nameの一覧と化してるキャラはいるから
cns覗かせてもらうといいんじゃない?
どういうキャラを対象としてるか分からんが、
無数にキャラがいるMUGENで対象全員に対応するのはほぼ不可能だから
把握してる範囲だけの対応でもいいと思うけどね
>>490
少しムラはあるけどできました!
ありがとうございます。
なるほど、ある程度は諦めるしかないということですね。
ありがとうございました。
東方仗助を作っているのですが、
絵をMUGENに取り込む際、
ジョジョキャラは横83.3%、縦107%という
特殊な縮尺にする必要があるのですが、
そうすると立ちとしゃがみが顔が全く違ってしまいます。
何か良い方法はありますでしょうか?
原作再現系のジョジョキャラにある、その縮尺は元ゲーの画面サイズ比がMUGEN比較で異なるから
そのまま1:1で表示すると横長のドットになっちゃうのを防ぐ意味で行われてるんだよね。
オリジナルでドット絵を描くんだったら横長のドットになんぞなるわけないんだから
気にせず普通に描いて1:1の縮尺で表示させればいいわけ。
>>496
>1:1の縮尺で表示させればいいわけ。
そうなると今までの奴を全部書き直す必要が・・・。
なんかそうしないとジョジョらしくないですし・・・。
諦めて書き直すべきなのか・・・、
それとも別の方法を模索すべきなのか・・・。
>>497
横から失礼します。
カプコンドットは縮尺が特殊なので、改変に使用する前に改変元スプライトを
MUGEN表示時のサイズ(1:1)に画像編集ソフトで補正してから改変してみては
いかがですか?
私がカプコンドットを何らかの形で使用する際はそうしています。
…今までの作られたドットに関しては1:1サイズに補正してから
細部を打ち直す、という作業が残念ながら必要になっちゃいますが、
それと引換にこれからは動作ごとに顔や他のパーツの整合性が狂うことはなくなりますよ。
>>497
1:1でも1.07:83.3でも自分が描きやすい方を選ぶのが一番ですが、
手描きジョジョは製作者さんが沢山おられるようなので、
サイズ等はそちらを参考にしてみてはいかがでしょうか。
どちらにせよ、早い内に方向性をしっかり定めておかないと
うちのミネアのように修正関係が大変になってえらい事に・・・。
>>499
オリジナルもほとんどが1.07:0.833です。
けど、そのオリジナルだと
顔がほとんど崩れていないんですよね・・・。
>>500
気のせいですよ。
1:1で補正の入らない素のままの自分のドットを信じて
製作を進めてください。
ttp://muvluv-alternative.game-server.cc/cgi-bin/mugen-up/upload.cgi?mode=dl&file=1160
pass=flygon
空中ダッシュとやらを作ってみたのですが
記述とか匙加減はこんな感じでいいのかな・・・?
(コピペするには長いのでtxt入ってます)
Physics=Nのy速度0で水平移動して
途中からStateTypeSetのPhysics=Aで重力付加した方が自然かな
>>503
空中でもN使って問題無かったんですね
地上=N、空中=Aと固執してました・・・
開始Nにしてtime=15でstatetypeset仕込むことにします
ありがとうございました
しまった地上はS/Cじゃまいか
空中蹴りの下降もNで良さそうだなぁ・・・
A・・・自動Gravity、Pos y>0で自動ChangeState「52」
S・・・自動VelMul「x=Const(Movement.Stand.Friction)」
C・・・自動VelMul「x=Const(Movement.Crouch.Friction)」
N・・・何もしない
だから空中技は基本的にAで良いんだけど
重力掛けたくない場合や着地ステートが割り込んで欲しくない場合はNにする
(x速度が0固定など摩擦の影響考慮しなくていい場合はSやCでも可)
あと、着地の割り込みはChangeStateなので相手に読ませるステートはAを避けた方が良い
Aにすると着地が割り込んだときにステート奪ってる側のcnsの52へ飛ぶからね
>>506
なるほどなー
取り掛かる時気をつけます
指摘部分入れました ついでに連続使用2回の制限も
ttp://muvluv-alternative.game-server.cc/cgi-bin/mugen-up/upload.cgi?mode=dl&file=1167
pass=flygon
最後に喰らった攻撃が弱Pとか小足だと崩れ落ちKOになるって記述を入れたいんですが
判断させるのをGetHitVarトリガーとかで行おうと思っています。
HitDefAttr = SC,NAと
GetHitVar(AnimType) = Lightで弱攻撃っぽいのを判断。
更にGetHitVar(Damage) < 30でダメージ量から判断させよう…と、思ったんですが
このトリガー、残りライフが10の状態で威力200の攻撃を喰らった場合も[10]を返してくれちゃいます。
残りHPに関係なく相手の攻撃ダメージの量を判断するor弱攻撃っぽいのを喰らったと判断する方法ってないでしょうか?
ダメージ量に関しては例え強攻撃でも
コンボ補正や逆根性値補正で30を下回ることもあるから
あまり当てにならないのでは?
やるとしたら本体のLifeが30以下の時にHelper呼び出して本体に重ねておいて
Helper側のGetHitVar(Damage)使って判定するとかが一番簡単なんじゃない?
相手のHitDefにHitOnce付いてると上手く取得できないけど
むむぅ、死にかけ限定でヘルパー使って判断ですか;
だとするとHitOnceの件も含めてアテにならな過ぎる可能性がありそう
諦めるかなー
>あまり当てにならないのでは?
なので、3つのトリガー重ねて信頼性高める(範囲も減っちゃうけど仕方ない)予定でした。
現在AIの作製にとりくんでるのですが
[State -1, 引き裂き]
type = ChangeState
value = 210
triggerall = var(59)>0 && roundstate = 2 ; AIフラグON、戦闘中
triggerall = power <= 5000 ; ゲージ5000以下
triggerall = p2statetype != A && p2statetype != L ; 相手が地上で、ダウンしていない
triggerall = p2bodydist X = [0,30] ; 相手が0〜30の距離にいる
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = stateno = 200
trigger2 = time > 10
でバグが出てMUGEN自体が落ちてしまいます。
triggerall = p2bodydist X = [0,30]に;を打って無効にするとちゃんと他は起動できるのですが何が原因なのでしょうか?
triggerall = p2bodydist X = [0,30] ; 相手が0〜30の距離にいる
↑この部分が全角スペースになっているから
>blankさん
全て半角のはずです。
別の
[State -1, 氷柱蜂起]
type = ChangeState
value = 900
triggerall = var(59)>0 && roundstate = 2
triggerall = p2statetype != A
triggerall = p2bodydist X = [-15,25]
trigger1 = statetype != A
trigger1 = ctrl
trigger2 = stateno = 200
trigger2 = time > 10
はちゃんと動きましたし・・・
矢印がずれてしまったので分かりにくかったかも知れません
[0,30]の後ろのスペースが全角になっているということです
記述の方がどうなっているかは分かりませんが>>511 をコピペしたら全角になっていたので
>blankさん
そちらでしたか(汗
たしかに全角でしたが関係なかったみたいです・・・
多分ですが…
triggerallにp2statetypeかp2statetype=!が使えないかも
trigger1・2に動かしてみてはどうでしょうか?
-`)oO(確かtrggerall=stateno!=は蹴られるんだよなぁ…
あとはp2トリガーはallに使えないとかallの中に2個あるからとかかなぁ…
鬱姫のAI作った時allにはp2トリガー入れなかったと思います
タブンネ
3レスもすいません
タッグでゾンビになるのでtriggerall=alive=1も入れといた方がいいですよ
>Pekeさん
できました。ありがとうございます
ゾンビは困りますからね。
Randomで-120から120の範囲で乱数を発生させる記述って、ないでしょうか?
Ceil(Random/10+Random/50)
という記述で強引に0〜119を発生させることは出来るハズなのですが…
これだと範囲が1足りてないのが困るのと、プラスマイナスを出させる記述が思いつかなくて困っています;
(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のパレットを同じにする。
加えて両方とも共有チェックは外しておくこと
これ両方やってみるべき
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板