レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
-
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
-
ヘルパー呼び出しの後、ヘルパーに攻撃させるという記述を作っていますが
「ヘルパー呼び出し〜ヘルパー退場」までの間に
ヘルパー自身ではなく「本体」が攻撃を受けたらヘルパーを消滅させる命令が
どうしても上手くいきません…。
ヘルパーの命令に下記の記述を入れていましたが
どうすれば上手くいくでしょうか…。
[State 1001, HitOverride]
type = HitOverride
trigger1 = Time = 0
attr = SCA, NT, ST, HT, NA, SA, HA,NP,SP,HP
stateno = 1009
time = -1
-
よく分かりませんが 消滅のトリガーに
trigger1 = !IsHelper (プレイヤーがヘルパーでない時)
trigger1 = movetype = H(プレイヤーが攻撃を受けている状態)
を指定してみたら?
-
そのヘルパーに
Type = DestroySelf
Trigger1 = Root,MoveType = H
を実行させればいい
すでにDestroySelfあると思うからそれにトリガーを追加するだけでもいい
注意が必要なのは
本体がヘルパー①を呼んでヘルパー①がヘルパー②を呼んで
ヘルパー①がDestroySelfした後だとヘルパー②からRootを参照することができない
だから本体情報を参照したいヘルパーは基本的に本体自ら呼び出した方がいい
-
>703 さん
>704 さん
ありがとうございます
本体ダメージでヘルパーの消去が出来ました
これで先に進めます
本当に助かりました
-
どうも、鰐といいます。
今回は絵のほうを一休みして内部処理(CNS記述)のほうに手をつけていたのですが…
実はカウンターヒットのダメージアップを作っていてちょっと問題が。
(記述)
;カウンターヒット補正
[state -2, カウンターヒット認識]
type = varset
trigger1 = P2movetype = A && movetype = A
var(11) = 1
[state -2, カウンターヒット認識リセット]
type = varset
trigger1 = ctrl
trigger2 = enemynear,ctrl
trigger3 = P2movetype != A
trigger4 = var(10) != 0
var(11) = 0
[state -2, カウンターヒット補正値]
type = varset
trigger1 = var(11) = 1
fvar(2) = 1.2
[state -2, カウンターヒット補正値リセット]
type = varset
triggerall = fvar(2) != 1
trigger1 = var(11) = 0
fvar(2) = 1
…とまあこのように簡易ではありますが
とりあえずP2MoveType = A 且つ (自分の)MoveType = A の時に変数をセットして
fvar(2)の値を技のダメージに掛けるようにしてみたんですが、
問題はHitdefのダメージは「ヒットした瞬間」じゃなく「発生した瞬間」で決定しているらしいことで、
このやり方だと正確には「相手が攻撃中にヒットした場合にダメージがアップ」にはならないわけです。
(正確には「相手が攻撃中に発生したこちらの攻撃のダメージがアップする」ので
相手の攻撃中に出た攻撃判定が相手の攻撃終了後に持続で命中してもカウンターダメージになってしまう)
一応自分の攻撃のHitdefを全部 trigger != movecontact を条件にして1フレームごとに再発生するように処理すれば
ヒットするフレームで相手が攻撃中か確認できるんですが…
この辺、皆さんどんな感じなんでしょう??
-
"McCready & Loganir"氏作のサンドマンみたいな感じで
「棒立ちの人間が砂になって崩れ落ちる」アニメを作りたいんですが
画像加工ソフトで、こういったものを作れるor補助できるものってありますか?
--------------------------------------------------------------------
--------------------------------------------------------------------
>>鰐さん
私も大体そんな感じでHitDefのトリガーで1Fごとに調整する処理にしてます(私はAnimElemTimeトリガー)
…他に方法知らないってのもありますけど
常時監視にvar依存のAttackMulSet置いておけば根性値とか補正も変数で一括管理できるってのは魅力でして。
それと、こっちはゲームの仕様にもよるんですが
私は攻撃判定が出なくなった段階でStateTypeSet使ってMoveType=Iに戻す処理を差し込んでます。
なんでかってーと、大概カウンターヒットはMoveType=Aで判断するので
自分が攻撃終えてフォロースルーの状態や残心してる時に攻撃を喰らってもカウンター判定になるのが困るからです。
リアルでは重心さえ(前に)来てれば振り始めでも振り終わりでも、いわゆるカウンターになっちゃうのかもですけど
-
>>706
変動する補正をリアルタイムで適用する場合HitDef上書きし続けるのが定石かな
Trigger1 = !MoveContactだと当身取られた後も攻撃出し続けちゃうから
Trigger1 = !MoveContact && !MoveReversedの方がいいと思うけど
-
どうもありがとうございます。
とりあえず
[State 200, 攻撃判定]
type = HitDef
trigger1 = AnimElemtime(2) = 0
trigger2 = animelemtime(2) = 1 && !movecontact && !movereversed
trigger3 = animelemtime(2) = 2 && !movecontact && !movereversed
・
・
attr = S,NA
damage = ceil(27 * (fvar(1)*fvar(2)*fvar(3)*fvar(4))), 0
guardflag = HL
hitflag = HLAF
・
・
・
…みたいな感じで攻撃判定持続フレーム数分
triggerxを追加すればよいわけですね。
というか逆に言うとこうしないと正確にカウンター判定できないのか…
でもあんまりhitdefのtriggerにこういう記述してるキャラは見ない気もする(笑)。
処理が重くなったりするんでしょうかね。
>>AZUMA殿
あ、あとアドバイスの通りAtateTypeSetでhitdef消失後の
statetypeを変える処理も入れました。
確かにこれもやっとかないと戻りにカウンター取られる(取ってしまう)ことになりますね(笑)。
おかげで何とかカウンターヒットとコンボ補正、(逆)根性値の導入は出来そうです。
有難うございました。
-
いや
Trigger1 = !MoveContact && !MoveReversed
だけでいい
それか
Trigger1 = (AnimElemNo(0)=[2,x]) && !MoveContact && !MoveReversed
という感じで判定ある部分だけに限定するか
-
なんとおっ
一度ステート内で攻撃判定出てからじゃないと機能しないのかと(何故か)思ってましたわ>movecontact系
しかしAnimElemNo( )とは…こんな時に使うのか。
多段技の場合は
[state 200, 攻撃判定初弾]
type = hitdef
trigger1 = animelemno(0) = 3 && !movecontact && !movereversed
(以下略)
[state 200, 攻撃判定2段目]
type = hitdef
trigger1 = animelemtime(4) = 0
trigger2 = (animelemtime(4) = [1,5]) && !movecontact && !movereversed
(以下略)
…で二段目持続部分の上書き発生してるんですかね??
トレモでやると戻りヒット時にはノーマルヒットのダメージに戻ってくれてはいるみたいなのですが
手動ポーズとかのぎこちない確認なんでどうも自信が…
-
初段ヒット〜二段目発生の間にMoveHitReset使ってるなら
二段目の持続も上書きし続けてる筈だよ
逆に言うとMoveHitReset使ってないなら初段がヒットした場合に上書きできない
-
無敵突進技を作っているのですが
type = NotHitBy
value = SCA
trigger1 = 1 と記述して
とある当身技を喰らうと、無敵時間中であろうが問答無用で投げられます
この場合 SCAの完全無敵は意味が無いのかな?
-
Reversaldefは
・Clsn1同士の接触
・Reversal.Attrと相手のHitdefのAttrの一致
が満たされれば成立するからNotHitBy使ってても防げない
Hitdef側のMoveType=IでもHitFlag=D-でもお構いなしに成立する
大抵のReversaldefにはP2StateNo付いてるだろうし
NotHitByと一緒にHitOverrideを使わせとけば基本的には大丈夫
HitdefのAttrとTriggerに工夫する手法もあるけど神キャラなどを相手にするんでなければ不要
-
ありがとうございました。
当身最強ですねw
HitOverrideを併用する事にします。
-
はじめまして
この度初めてキャラ製作を始めたものです
それで現在製作中のキャラに特殊なシステムを組み込みたいのですが、特殊過ぎて自分でもどのように記述すればいいのか分かりません…
そのシステムというのが
・試合開始から12秒毎に使用可能
・使用可能時にボタンを押すと攻撃力アップ
・使用不能時にボタンを押すと隙を晒す
・全ての行動からキャンセル可能
というもので、もし可能ならば
・12秒毎から遅れると攻撃力アップの倍率がその分下がる
・喰らい中ならば喰らい抜け効果
というのも付けたいです
複雑すぎて説明がしづらく、伝わっていない部分が多いと思います
質問があれば答えますので、どなたかこのシステムのCNS記述のし方を教えてください
おこがましいのは重々承知していますが、どうかよろしくお願いします
-
カットインとかの時間停止中もカウントを続けるかどうかにもよるけど
例えば
[State -2]
Type = VarSet
Trigger1 = RoundState < 2
V = 12
Value = 720
[State -2]
Type = VarAdd
Trigger1 = RoundState = 2
Trigger1 = StateNo != 1200
V = 12
Value = -1
[State -2]
Type = AttackMulSet
Trigger1 = FVar(12) > 1
Value = FVar(12)
を-2に置いて
[State -1]
Type = ChangeState
Trigger1 = Command = "ボタン"
Value = 1200+(Var(12)>0)
を-1に置いて
1200番を攻撃力アップステート、1201番を隙ステートにする
で、1200番では
[State 1200]
Type = VarSet
Trigger1 = Time = 0;お好みのタイミングに変更
Trigger1 = Var(12) > -720;適宜調整
FV = 12
Value = (FVar(12)=0)+FVar(12)+0.5+(0.5*Var(12)/720);適宜調整
[State 1200]
Type = VarSet
Trigger1 = Time = 0;お好みのタイミングに変更
V = 12
Value = 720
[State 1200]
Type = ChangeState
Trigger1 = AnimTime = 0;適宜変更
Value = 0
みたいにする
Var(12)は720から毎F1ずつ減っていき、0を下回った時点で12秒経過とみなす
FVar(12)はAttackMulSetで攻撃力を上げる(乗算する)値
初期値が0だから「Value = (FVar(12)=0)+・・・」と初回だけ1を余分に足してあげる
上の例だと使う度に初期攻撃力の50%上昇、12秒以上遅れて発動すると恩恵なしって感じ
-
ありがとうございます!
よく理解していなかったので、改めて勉強になりました
-
ハイジャンプを作りたいんですが、どのような記述をすればいいんでしょうか?
-
40(ジャンプ準備)→50(ジャンプ上昇&下降)→52(着地)が通常のジャンプ動作だから
40のコピペで41(未使用番号であれば何番でもおk)を追加して、下から三番目にあるVelSetのyの値を変えるだけでいい
あとはcmdにハイジャンプ用のコマンド追加して
[State -1]
Type = ChangeState
TriggerAll = Command = "highjump"
Trigger1 = StateType != A
Trigger1 = Ctrl
Trigger2 = StateNo = 40
Value = 41
Ctrl = 0
あたりでステート移行させればおk
-
今作ってる技(空中竜巻旋風脚みたいな技)のステートをどういう記述にすればいいかわかりません
ttp://www42.tok2.com/home/mugendteita/Suploda/uploda/src/file1000.png
(上昇時に発動すると空中竜巻のように高く飛ぶ)
↑こういうふうにしたいんですが
veladdだけを使うと空中で一度止まってから浮く感じになってしまいます
何を使えばいいんでしょうか?
-
Physics = Aになってるのかな?
Aだと自動で重力かかるからNにした上でVelAddした方が良い
Nにした場合は着地の内部処理(ChangeStateのValue = 52)が働かなくなるから
低空で「下降中に発動」した場合にPos y >= 0とVel y > 0でChangeState用意する必要があるけど
-
Physics = Nにしても上昇中に発動すると一度止まってから動き出します・・・
「上昇中に発動」と「下降中に発動」でステート分けたほうがいいのかな
-
もしかして
[Statedef ****]
Type = A
VelSet = 0,0
とかになってない?
ここにVelSetがあると、そのステート読み込んだ瞬間に速度上書きされるよ
そうでないなら記述コピペしてもらった方が解決早いかも
-
2行目訂正
「上昇中に発動したとき」と「下降中に発動したとき」でステートを分けてveladdの数値を別にすればいいのかな
-
あ!できました!
VelSet = 0,0消したらできました!ありがとうございます!
-
突進攻撃兼突進当身技を作ろうとしたのですがReversalDefを書き込んだらhitidefが昨日しなくなりました。もしかしてこの二つは同時に機能しないのでしょうか?
CNSは
[Statedef 3300];猫の足音
type = S
movetype= A
physics = S
juggle = 0
poweradd= 0
ctrl = 0
velset = 0,0
anim = 3300
sprpriority = 2
[State 3300, 超必殺技暗転時間停止]
type = SuperPause
trigger1 = time = 0
anim = 100 ;超必エフェクトのアクションナンバー。通常は「fightfx.air」のアニメを使うが、
;左に「s」を付ければ「自分のairファイル」のアクションナンバーが使える。
pos = 25, -57 ;超必エフェクトの座標(X軸,Y軸)
sound = 20, 0 ;超必発動サウンド。通常は「common.snd」の音を使うが、
;左に「s」を付ければ「自分のsndファイル」の音が使える。
poweradd = -2000 ;パワーゲージ増減量
time = 33 ;ポーズする時間(フレーム)
movetime = 0 ;ポーズ中に動ける時間。timeよりも多いとバグる(デフォルトは0)
;darken = 1 ;ポーズ中画面を暗転するか否か(0=しない・1=する)
;暗転する色は「ownpal」の有無により「Explod」や「ヘルパー」にも影響するので注意。
p2defmul = 1.0 ;直前のステートを「SuperPauseを設置したステート」でキャンセルした場合、
;『相手に一時的に与える防御力乗算値(float)』。
;デフォルトは0。(相手の防御力が上がり、ダメージ量に下方修正が掛かる)
;1にすれば『ダメージ補正が掛からなくなる』事になる。
;相手が食らい状態以外(相手のMoveTypeが「H」以外)になれば解除される。
unhittable = 1 ;ポーズ中自分を無敵状態にするか否か(0=しない・1=する)
;デフォルトは1。
[State すり抜け]
Type = PlayerPush
Trigger1 = time > 3
Value = 0
[State 3300, 物理的なキャラの幅]
type = Width
trigger1 = (AnimElemTime (2) >= 0)
value = 15,0 ;この場合キャラの幅を一時的に前に15ピクセル伸ばす事になる。
;値の意味は「前方のピクセル増減量,後方のピクセル増減量」
[State 2];速度を与える
type = Velset
trigger1 = time = 3
x = 40
y = 0
[State 3300]
type = varset
trigger1 = movehit = 1
var(13) = 1
[State 減速]
Type = VelAdd
Trigger1 = time < 30
Trigger1 = Vel X > 0
X = -0.5
-
続きです。
[State 3300, ヒット定義]
type = HitDef
trigger1 = (AnimElemTime (2) >= 0)
attr = S, HA
damage = 200, 20
animtype = Hard
guardflag = L
hitflag = MAF
getpower = 0,0
priority = 7, Hit
pausetime = 0, 0
sparkno = 0
sparkxy = -10, -76
hitsound = 5, 0
guardsound = 6, 0
ground.type = low
ground.slidetime = 10
ground.hittime = 10
ground.velocity = -1,0
air.type = High
air.velocity = -1.-5
air.fall = 1
fall.recover = 0
air.juggle = 1
p2stateno = 3111
[State 1105]
type = ReversalDef
trigger1 = (AnimElemTime (2) >= 0)
reversal.attr = SC,NA,NT
pausetime = 10,10
p1stateno = 1107
p2stateno = 1109
[State 2];速度を与える
type = Velset
trigger1 = movehit = 6
x = 0
y = 0
[State 3100, ステート変更]
type = ChangeState
trigger1 = movehit = 7
value = 3101
ctrl = 0
[State 3300];停止stateに移行
type = ChangeState
trigger1 = time > 11
trigger1 = Vel x < 7
trigger1 = var(13) = 0
value = 1106
-
ReversalDefとHitDefはお互いに上書きし合う関係だから
同一フレームで両者が機能することはない
後に読み込んだ方が機能するから同じステート内なら下に記述した方が、
常時監視と個別ステートなら個別ステートに記述した方がそれぞれ機能する
どうしても両方機能させたいなら片方をヘルパーに肩代わりさせるしかない
-
上の方から降りてくるイントロを作りたいんですが、どの様な記述をすればいいんでしょうか?
velsetやveladdを使っても奇妙な動きをしてしまいます。
-
[Statedef 190]のパラメータとしてPhysics = Nを付けるか
StateTypeSetステコンでPhysics = Nに設定すれば
内部処理の重力・摩擦がかからないからVelSetやVelAddで設定した通りの動きになる
有翼キャラとかがゆっくり下降してくる感じなら
最初にVelSetしてPos y >= 0になった時点でVelSetとPosSetのy = 0で着地
あとはScreenBoundステコンのMoveCamera = 0,0でカメラが自キャラを追わないようにしたり
PlayerPushステコン使ったりClsn2に何も設定しないことで相手との押し戻しを避けたりして
動きの妨げになる原因を減らすことも割と重要
-
>729
>どうしても両方機能させたいなら片方をヘルパーに肩代わりさせるしかない
なんとか出来上がりました。アドバイスありがとうございます。(なんかまだ不具合でそうだけど)
流れとしてはヘルパーと本体攻撃判定をだす→ヘルパーに攻撃当たったら相手を木偶ステート→同時に本体に本体に変数返してそれをトリガーに反撃ステートへ
という流れになっています。
-
小ポトレ(9000,0)を登録したのですが、
キャラセレクトでは正しく表示されますが
戦闘中は黒く潰されてしまいます
(※ただ透過色に設定している箇所は正しく抜けています)
これはどうすれば正しく表示されるでしょうか…?
-
パレット共有に失敗してるかもしれません
9000,0は本体色変更(palfx)と連動するため強制的に本体とパレット共有されます
なので本体と同じパレット構成にすれば大丈夫かと
具体的には0,0をbmpで保存してペイント等で開き、(win7のペイントはクリップボードの画像を強制で24bit変換する欠陥品なので×)
9000,0を貼り付けて別名保存したあとsffの本体画像の隣に再登録
です
-
>Peke様
お答えいただきありがとうございました。
しかし…現状うまくいっておりません…。
本体パレットと小ポトレのカラーを共有化させ、
登録スプライトの順番を
「小ポトレ」「大」「0,0」で登録しましたがやはりうまくいかず…
またFighter Factory Ultimateというツールを使っていますが、
こちらでbmp(またはpng)の画像を開くと「黒く」色化けされて表示されます。
確信はありませんが、おそらくここが修正されればうまくいく気もするのですが…
良い方法がございましたらお教えください…
-
対戦画面上の小ポトレはact読み込むから
actで色指定してないパレット番号を小ポトレの画像で使ってるとシルエット状になる
小ポトレ画像からact作ってそれをdefで指定すればいける筈
あと、大ポトレは一般的にパレット共有しないから
小ポトレと0,0の間に挟むのはよろしくない
-
申し訳ない
自分はSAEしか分かりませぬ…
本体とパレット合わせても化けるなら
小ポトレが本体スプライトの共有範囲外に並んでいるのが原因です
SAEならすぐ直せます
SAE起動してsffを開き、小ウィンドウの小ポトレのコマを切り取って本体共有範囲内に挿入(本体スプライト上書き注意)
もしくは小ポトレのbmpを共有範囲内に共有チェックボックスonにして番号9000,0で挿入すればいけるかと
座標は小ポトレの左上がメインウィンドウの十字線中央です
-
おっと失礼
小ポトレのみ強制共有なのでsff側の共有設定はどっちでもいいんでした
うちの子のsffだとこんな具合↓
ttp://www42.tok2.com/home/mugendteita/Suploda/uploda/src/file1005.PNG
大ポトレは一番下側の非共有コマ部分に独自パレットで入ってます
-
アドバイスしていただいた皆様ありがとうございます。
またpeke様は丁寧な図解までしていただいて真にありがとうございます。
私のほうでもツールを変えながら皆さんのご意見を参考に設定してみようと思います。
-
小ポトレや SAEなどのツールの話題が出たところで・・・
ちゃりこん(charicon)というソフトがあり
キャラのフォルダーに小ポトレのアイコンを作成してくれるのですが
SAE以外で作成したSFFからは、アイコンが作成出来ません。
上記の話題に上がった ポトレの差し込む位置や パレット共有などは
各ソフトで、"クセ"が出ますので注意されたし。
-
小ポトレ直りました〜!!!!!!!!!
皆様にはもう足を向けて寝ることが出来ません…。
本当に本当にありがとうございました!!
-
どうも、ネコマタを作ろうとしている者です。
ひとまず必須をMUGEN上で見とこうと思い、地球氏のKFMのスプライト入れ替えた
のですが、何故かしゃがみがMUGEN上でほんの僅かに前後にガクガク動きます。
現物もニコろだに上げときます。3406のpass「女神転生」です。
教えていただけると助かります。
-
11-0、11-1、11-2、11-3のx軸がsffの時点で合ってないよ
-
>blakさん
SAEでairを見る限りではずれてないよう見えるのですがそれとはまた別ということでしょうか?
sffの時点で揃ってないといけないということですか?
-
ひとまずSAE以外で試してみます。
ありがとうございました。
-
defで指定してるnekomata.airの方をSAEに読ませてるよね?
kfm.airも一緒に入ってたけど・・・
-
■Sprite Database
ttp://sdb.drshnaps.com/
■The Spriters Resource
ttp://spriters-resource.com/
■RetroGameZone
ttp://retrogamezone.co.uk/
■GSA−GameSpriteArchives
ttp://www.gsarchives.net/index2.php
■deviantART: where ART meets application!
ttp://www.deviantart.com/
■Pixel Warehouse
ttp://pixel.garoux.net/
■Streets of Rage Online
ttp://www.streetsofrage.net/
■Sprites INC
ttp://www.sprites-inc.co.uk/
-
途中送信すいません汗
キャラにヘルパーつけようと思うんですけど、サイズは揃えた方がいいんですかね?
ヘルパーだけ0.25倍表示とかできるといいのになー
-
Type = Helperのパラメータに
Size.xScale = .25
Size.yScale = .25
付ければおk
-
>>749
すいません、ありがとうございます!
何故気付かなかったし…
-
イントロで、タオカカよろしくドアップカメラ目線→画面外から走ってくるというのにしようと思ったのですがなかなか上手くいきません
現状CNSは
;イントロ(試合開始前の登場演出アクション)
[Statedef 191]
type = S
ctrl = 0
anim = 190
velset = 0,0
[state 191]
type = varset
trigger1 = time = 0
fvar(3) = BackEdgeBodyDist
[state 191]
type = posset
trigger1 = time = 190
x = -80
[state 191];加速
type = veladd
trigger1 = time = 190
x = 15
[state 191];停止
type = velset
trigger1 = BackEdgeBodyDist = fvar(3)
x = 0
[State 191, 特殊効果];試合が開始するまではこのコントローラを使おう(※2)
type = AssertSpecial
trigger1 = 1
flag = Intro ;イントロの状態
[State 191, ステート変更];アニメーションが終われば「通常立ち」のステートに変更する
type = ChangeState
trigger1 = BackEdgeBodyDist = fvar(3)
trigger1 = time > 200
value = 0
という風になっています。どなたかアドバイスお願いいたします。
-
どう上手くいってないのか分からないことには…
PhysicsがSになってて摩擦が働いてるせいで勝手に減速してるとか?
それならStateDefのとこかStateTypeSetでPhysics = Nにすれば直る
あと、VelSetとChangeStateの条件が厳し過ぎるから
Trigger1 = BackEdgeBodyDist = FVar(3)じゃなくてTrigger1 = BackEdgeBodyDist-FVar(3) = [-7.8,7.8]
とかにしないと滅多に成立しないと思う
7.8ずつ幅を持たせてるのは速度が15だから7.5ずつに少しゆとりをつけておく感じで
さらに、ScreenBoundで画面外に出られるように設定しないと駄目だと思う
190番Animの190F目まではドアップカメラ目線のデカイ画像で191F目以降は走りモーションが登録されてるんだよね?
それよりは
[State ]
Type = ChangeAnim
Trigger1 = Time = 190
Value = 100;走りモーション
[State ]
Type = PosSet
Trigger1 = Anim = 100
x = -80;Pos xは画面中央基準だから-80だと画面内じゃないか?
Persistent = 0
[State ]
Type = VelSet
Trigger1 = Anim = 100
x = 15
Persistent = 0
として
ChangeStateの2番目のTrigger1をTime>200じゃなくてAnim=100にした方が管理が楽だよ
-
>752
>どう上手くいってないのか分からないことには…
失礼しました。何故か停止してくれのが問題でした。
で、VelSetとChangeStateの条件をご指摘の通り変更したのですが、何故か2p側だととまるのに1p側だち走り続けるという状態に??
[Statedef 191]
type = S
ctrl = 0
anim = 190
velset = 0,0
[state 191]
type = varset
trigger1 = time = 0
fvar(3) = BackEdgeBodyDist
[State ]
Type = ChangeAnim
Trigger1 = Time = 190
Value = 1230
[state ]
type = ScreenBound
trigger1 = 1
value = 0
movecamera = 0,0
[state 191]
type = posset
trigger1 = anim = 1230
trigger1 = TeamSide = 2
x = 300
Persistent = 0
[state 191]
type = posset
trigger1 = anim = 1230
trigger1 = TeamSide = 1
x = -300
Persistent = 0
[state 191];加速
type = veladd
trigger1 = anim = 1230
x = 8
Persistent = 0
[state 191];停止
type = velset
trigger1 = backedgebodydist - fvar(3) = [-7.8,7.8]
x = 0
[State 191, 特殊効果];試合が開始するまではこのコントローラを使おう(※2)
type = AssertSpecial
trigger1 = 1
flag = Intro ;イントロの状態
[State 191, ステート変更];アニメーションが終われば「通常立ち」のステートに変更する
type = ChangeState
trigger1 = backedgebodydist - fvar(3) = [-7.8,7.8]
trigger1 = anim = 1230
value = 0
backedgebodydistって1p側と2p側だと違う値を返すのでしょうか?
-
TurnとかとかFacingとかFaceP2関係は使ってない?
Time = 0で記憶した「BackEdge」と、停止するか否かを判断するときの「BackEdge」が同じ側じゃないと計算狂うよ
BackEdgeBodyDistは「その時点で背を向けてる側のステージ端から自分までの距離」だからね
-
鬱姫のイントロ移植してもいいのよ?
自分のはのりもののイントロを参考に開始と同時に本体透明にしてexplodでやりくりしてます
-
>peke2さん
>鬱姫のイントロ移植してもいいのよ?
お言葉に甘えさせていただきました。これでα版公開できます。
-
現在突進技を作っていますが、
連続ヒットとして設定するとどうしても2発目以降がガードできず
実質ガード不可のようになってしまいます。
これを2発目以降もガードできるようにするにはどうしたらよいでしょうか?
[State 1320,HitDef]
type = HitDef
Trigger1 = time = 2
Trigger2 = time = 4
Trigger3 = time = 6
Trigger4 = time = 8
Trigger5 = time = 10
attr = S, HA
animtype = Hard
air.animtype = UP
damage = 30
getpower = 0
givepower = 35, 35
guardflag = M
hitflag = MAF
pausetime = 5,5
sparkno = S8000
guard.sparkno = 0
sparkxy = 0, -30
hitsound = s1,30
guardsound = s4,0
ground.type = Low
ground.slidetime = 20
ground.hittime = 20
ground.velocity = -8
air.velocity = -4.5,-7
yaccel = .5
air.fall = 1
fall.recover = 0
ground.cornerpush.veloff = 0
air.cornerpush.veloff = 0
envshake.time = 10
envshake.ampl = 2
forcestand = 1
-
アニメーションって下書きを作るのと
初めから一気に書くの、どちらが効率が良いのでしょうか?
今一気に書いているのですが、どうも先が見えず、
かといって下書きを作るのも手間が・・・・。
-
製作というかわかりませんが自分のキャラをみなぎってきたトーナメントみたいにみなぎらせたいのですが、
huwahuwa氏のみなぎらせ方の説明書を見てもあまりわかりづらいので誰か詳しく教えていただけないでしょうか?
(ちなみにみなぎらせたいキャラはシエルとスバルです)
-
>>757
ステ番とAttrから察するに超必だと思うけど、SuperPauseか何か使ってる?
止められてる最中に2発以上の攻撃を受けると
1発目で150に飛ばされた後、2発目を150のTime=0で受けることになって
ガード処理が実行できずに5000に飛ばされる(StateType=Sの場合)
だから暗転中に2段以上ヒットさせるような技は実質ガー不
あまり良い手ではないけど、どうしても暗転中に攻撃させたい場合は
相手のStateNoやCommandとCtrlでガード中か否かを判定して、
ガード中ならP2StateNo=150+2*(P2StateType=C)+4*(P2StateType=A)で
ガードステートに強制移動させるという方法がある
Pause系統使ってないのにガー不になるんだったら>>757の記述だけじゃ原因分からん
>>759
詳細知らんけどwikiで大会ルール見た感じとしては
StateDef -1にあるChangeStateのTrigger全部コメントアウトして
Trigger1 = Random = 1とかで適当に技発動させりゃいいんじゃないの?
-
>>760さん
ありがとうございます。
無事解決できました
尚、ご指摘のとおりSuperPauseを使用していました
-
初歩的ですみませんが
キャラのCNSの内容を更新するためにはわざわざMUGENを再起動させるしかないんでしょうか?
再起動させなくてもCNSが更新されてるっぽい内容の動画を見つけたんですが本当にできるんでしょうか。
-
>>765
試合中であればShift+F4で更新したものを読み込めます。再起動扱いになるはず。
-
知らなかったです。今までずっと再起動してました。ありがとう!
-
763>>そんな方法があったとは・・・。
ところでkanajlo氏の改造新MUGENのように新MUGENのmugen.exeを改造するにはどうすればいいか知っている人はいませんか?
-
逆アセの知識持ってないときついと思うよ
簡単な改造だったらバイナリエディタで根気強く試行錯誤すればできるかもしれんが
改造してる本人に聞くか、プログラミングを勉強した方がここで聞くより確実かと
-
ぐぬぬ
2pカラーで数コマだけ色が戻っちゃうのは何でなんだぜ
-
パレットの共有設定がなされていないから
SFFを適当な編集ソフトで開いて当該画像のパレット共有設定をONにすればおk
-
ちょっと自キャラのこれからの制作方針にかかわってくる問題にぶつかったので質問させて頂きます
キャラ本体の画像の他に常時上から透過をかけた画像を表示させたいのですが可能でしょうか?
-
>>768
すいません、ありがとうございます!
-
>>769
炎を纏ったキャラとかバリア張ってるキャラとかのイメージで合ってるならできる
Explod(表示のみ)やHelper(色々可能)やProjectile(攻撃・一部相殺)で本体とは別管理の画像を表示できるからね
airファイルで透過設定できるし、Helperならcns側でも透過設定できる
-
>>769
多分スカートの話ですよね?赤セイバーの
出来ると言えば出来ると思いますけど
はっきり言って最初からスプライトに半透明部分を描きこんだ方が楽ではあるかと
半透明部分を本体と別に作って合わせるとすると動きをあわせる関係上
本体のスプライト枚数と同じだけのスカートを描かなければならないですし
アニメも本体のアニメと同じだけ作らなければならない上に
プログラム上で両者の動きのタイミングや移動もあわせるとなると相当めんどくさいと思うのですよね
最初からスカートの半透明部分を本体に描きこんでおく形なら
単に「透けて下が見えてるように描いてある」擬似透過処理ではありますが
あとから色々いじる際にも余計な手間を生まない(スカートと本体が別だと
例えば技のフレームをいじった際にスカートのフレームもいじらなければならないとか)ので
手間が多分全然変るんじゃなかろうかと…
無論労力は惜しまないということであれば徹底するのもありですが。
-
どうしてもマジックサーキットのMAX処理がうまく行かぬ…
具体的には
①MAX中にゲージ1000以下になる
②EXエッジ発動
③MAX解除+残ゲージ2000
となる処理の②と③の処理がうまく行かぬのですが何かいいアイディアありませんか?
-
自己解決しますた
-
スカートか…
ChangeAnim2やAngleDraw使われると本体に合わせて表示するのは厳しいよ
平常時はPause無視のヘルパーをBindToRootで軸合わせしつつ
[State ]
Type = ChangeAnim
Trigger1 = 1
Value = Root,Anim+10000
Elem = Root,AnimElemNo(0)
でアニメーションの同期取れば済む話なんだけど
スプライト番号(≠アニメ番号)読み取るトリガー無いし、回転角読み取るトリガーも無い
状況が限定的とはいえ、P2Nameとかで対応するのも現実的じゃない
ChangeAnim2やAngleDrawに目を瞑るか、最初からスカートを統合した画像を描くかのどっちかかな
-
赤セイバーの透明スカートは赤スカートの内側に着てるから、重ならないように描いた画像をうまくcnsで処理するのは難しそうですね。
元から描いてしまうにしても、透明の表現を描くのはなかなか…(…それは個人の力量の問題か;)
レイヤー効果を使うのが一番楽だったなー
-
>>771
>>772
>>775
>>776
レスありがとうございます!
すいません、言葉足らずでした。スカートのことだって言うべきだった
やっぱり、難しいですか…
透過は無しでいくかな、正直現段階でもけっこういっぱいいっぱいなので透過を自分で書き込むのは死にそう
ただmiさんの「レイヤー効果を使う」というのが気になるんですがそれはGaleじゃ無理でしょうか?
PhotoShopとか必要になるのかな…
たびたび質問してすいません
-
以前photoshopで合成を試みてみましたけど、できるにはできるもののパレットの色がバラバラになった記憶ががが
Galeにもレイヤーを半透明にする機能はあるみたいですよ。けど使った事あまりないので詳しくは……
-
>>778
Galeでもできるんですか!
一応調べてみたんですが出てくるのがオニオンスキンの説明ばっかだったので無理かなって思ってました…
もうちょっと探してみます、ありがとうございました!
-
今けもぅの超必を作っていて、本体の他に砲台をヘルパーにしようと考えているんですが、
プレイヤー本体とヘルパーが重なった部分の影の色が濃くなってしまいます
noshadowだと重なってない部分の影が消えてしまいます
何か対処法は無いでしょうか?
-
影はステージ依存だから無理だと思う
キャラ側では表示するかしないかの「全か無か」しか設定できない
重なりを考慮して欠けたスプライトを用意するわけにもいかないだろうし
-
ステージ端での壁バウンド技を作っているのですが、行き詰ってしまったので質問させてください・・・
ヘルパーを使ってステージ端の探知は出来ています。
ステートを奪った相手のBackEdgeBodyDistとステージ端にいるヘルパーのPosをトリガーにしてバウンドする処理をしたいのですが、どうも上手くいきません・・・
ステートを奪った相手に、こちらのヘルパーの位置を参照させる方法はないでしょうか?
-
PlayerIDリダイレクトで参照できなくはないけど、
本体Varにヘルパー位置情報を格納してEnemyリダイレクトで相手にそれを参照させた方が楽だよ
-
>>783
できました〜!
ありがとうございます〜
-
>>782
そうですか・・・わかりました、ありがとうございます
-
アンカーミス
>>782じゃなくて>>781
-
AI製作中にいきなりエラーが出てしまいました。AIトリガー製作後まず弱パンチから製作に入ったのですが
;立ち弱
[state -1];AI立ち弱
Type = ChangeState
Value = 200
TriggerAll = Var(59) = 1
TriggerAll = StateType != A
Trigger1 = Ctrl ;ここから下の記述でAIの行動を限定させていきます。
Trigger1 = P2StateType != A ;相手が空中状態以外のとき
Trigger1 = P2MoveType != A ;相手が攻撃状態以外のとき
Trigger1 = P2BodyDist X = [0,50] ;相手とのX方向の距離が0から50のとき
Trigger1 = Random <= var(58)*100 ;AIレベル差
この記述を消すとエラーが出ない点からAIトリガーには問題がないと思われるのですが原因がよくわかりません。
-
>787
他のテンプレをコピペしたところエラーは出ませんでした。しかし原因はなんなんでしょう?今度はAIスイッチより上に記述したから?
-
その記述は問題ないと思います
情報不足過ぎて何とも言えませんがその記述で疑うならvar(58)かと
var(59)がスイッチのようなので
var(58)の計算式がおかしいか定義してないのでは?
それと
triggerall = alive = 1 ;タッグ時ゾンビ化する
triggerall = roundstate = 2 ;無いとフライングする
この2個は入れといた方がいいですよ
trigger1 = p2statetype != L ;無いと相手がダウン中でも無駄に振る
技次第ではこれも
-
コメントアウトより左側に全角スペースがあるのを全部消すか半角にしてみたら?
内容そのものに問題があるようには見えないから全角スペース読ませなくすれば多分エラー消える
-
RoundState=2はフライングの抑制にはなるけど防止にはならないから注意
RoundState=2になるタイミングとStateNo=0かつCtrlになるタイミングはアドオン次第で異なるからね
(StateNo=0)*(Ctrl)+((StateNo=10)+(StateNo=20)+(StateNo=40))*(PrevStateNo=0)
あたりで試合開始を感知してフラグ立てた方がフライング防止には確実
開幕前行動のあるキャラは更に工夫が必要になるけどね
フラグはVar(59)の正負使えば(正でフラグON、負でフラグOFF)変数増やさなくて済むし
-
しゃがみ通常攻撃のAI用記述を入れたので試しにVSモードでAI入れて密着してみたのですがあれ?2弱振ってこない?
;しゃがみ弱パンチ
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = var(59) = 1 && RoundState = 2
triggerall = alive = 1
triggerall = statetype != A && (p2statetype = S || p2statetype = C)
triggerall = ctrl && (P2BodyDist X = [20,45]) && random <=50*var(58)
triggerall = ctrl && (P2BodyDist X = [0,20]) && random <=100*var(58)
trigger1 = p2movetype != A
trigger2 = p2movetype = A && life >= lifemax / 2
P2BodyDist X が20以下のAI記述はまだこれしか書いてないので密着すれば即これ振ってくるはずなのに?まだ歩きとかジャンプの
AI用記述がないからでしょうか?それともAIスイッチがまずいのでしょうか?
[State -1, AIフラグセット]
type = VarSet
triggerall = !var(59)
triggerall = RoundState = [1,2]
trigger1 = Command = "AI0"
trigger2 = Command = "AI1"
trigger3 = Command = "AI2"
trigger4 = Command = "AI3"
(中略)
trigger49 = Command = "AI48"
trigger50 = Command = "AI49"
trigger51 = Command = "AI50"
var(59) = 1
var(58) = 10 ;AIlevel
>triggerall = alive = 1
>trigger1 = p2statetype != L ;無いと相手がダウン中でも無駄に振る
記述追加しておきました。
-
P2BodyDist Xは自分の前端から相手の前端(向き合ってる時)または後端(そっぽ向かれてる時)までの距離
Ground.FrontとClsn2次第では密着するとマイナスの値にもなり得るよ(つか密着してたら大抵負の値)
-
あと、TriggerAllの4つ目と5つ目のせいでP2BodyDist Xが丁度20の時しか条件満たさなくなってるよ
-
>793
>P2BodyDist Xは自分の前端から相手の前端(向き合ってる時)または後端(そっぽ向かれてる時)までの距離
>Ground.FrontとClsn2次第では密着するとマイナスの値にもなり得るよ(つか密着してたら大抵負の値)
ground.front = 16
ニュートラルのClsn2先端が15(30×0.5〔D4〕)
しゃがみがのClsn2先端が37.5(75×0.5〔D4〕)
でCMDに
;しゃがみ弱パンチ
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = var(59) = 1 && RoundState = 2
triggerall = alive = 1
triggerall = statetype != A && (p2statetype = S || p2statetype = C)
trigger1 = p2movetype != A
trigger1 = ctrl && (P2BodyDist X = [0,45]) && random <=50*var(58)
trigger2 = p2movetype != A
trigger2 = ctrl && (P2BodyDist X = [-35,0]) && random <=100*var(58)
trigger3 = p2movetype = A && life >= lifemax / 2
trigger3 = ctrl && (P2BodyDist X = [-35,0]) && random <=100*var(58)
と記述したのですがこれでもたまにしか弱パンチふってきません。-35をー100くらいにしても反応しない??
-
取り敢えず「&& random〜」の部分コメントアウトして乱数要素排除した状態で
P2BodyDistの代わりにP2Dist使った場合とP2BodyDistのままの場合で上手くいくか試してみて
P2Distに変える場合は基準点が違うから-35,0,45の値も変えないといけないけど
あとは
[State ]
Type = DisplayToClipboard
Trigger1 = 1
Text = "P2BodyDist X = %f"
Params = P2BodyDist X
でデバッグ表示してみると原因解明の助けになるかも
-
>796
>取り敢えず「&& random〜」の部分コメントアウトして乱数要素排除した状態で
「&& random〜を除外したところ弱パン振ってくるようになりました。それにしてもなんで乱数が上手く機能しなかったのでしょうか?
var(59) AIスイッチとvar(58)AIレベル は同じstate -1で処理してるからAIスイッチが入ればAIレベルも機能するはずなんですが?
-
var(x) =の代替書式使ったこと無いから分からんけど、同じステコン中に2つ書いて両方機能するものなの?
上に書いた方のみが機能して下に書いた方は無視されるような印象なんだけど
改善案としては「var(59) = 1」を消して「var(58) = 10 ;AIlevel」を「var(58) = (Var(59):=1)*10 ;AIlevel」に変更すれば
ステコン自身の処理でvar(58)に1*10が格納されて、「:=」の機能でvar(59)に1が代入されるようになるよ
-
>796
>var(58) = (Var(59):=1)*10 ;AIlevel
見事機能しました。ありがとうございます。
ええ連投気味で申し訳ないのですが立ち弱のAI記述追加をしたらしゃがみ弱を全く振らなくなってしまいました。
triggerは一部違うしrandomも含めているのですが?
記述は以下の通りです。
[State -1, 5弱]
type = ChangeState
value = 200
triggerall = var(59) = 1 && RoundState = 2
triggerall = alive = 1
triggerall = statetype != A && (p2statetype = S || p2statetype = C)
triggerall = p2statetype != L
triggerall = ctrl && (P2BodyDist X = [0,40])
triggerall = Const(size.head.pos.y) < -40
triggerall = P2Dist Y >= -20
trigger1 = p2movetype != A
trigger1 = random < var(58)*50
trigger2 = p2movetype = A && life >= lifemax / 2
trigger2 = random < var(58)*50
;------------------------------------------------------------------------------
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = var(59) = 1 && RoundState = 2
triggerall = alive = 1
triggerall = statetype != A && (p2statetype = S || p2statetype = C)
triggerall = statetype != L
triggerall = p2statetype != L
triggerall = p2statetype ! = A
triggerall = Const(size.head.pos.y) >= -40
trigger1 = p2movetype != A
trigger1 = ctrl && (P2BodyDist X = [0,45])
trigger1 = random < 500
trigger2 = p2movetype = A && life >= lifemax / 2
trigger2 = ctrl && (P2Dist X = [0,45])
trigger2 = random < 500
trigger3 = p2movetype != A
trigger3 = ctrl && (P2Dist X = [-35,0])
trigger4 = p2movetype = A && life >= lifemax / 2
trigger4 = ctrl && (P2Dist X = [-35,0])
-
Constは文字通り定数だからConst(size.head.pos.y)は常にcnsの[Size]のHead.Posに書いた値しかとらないよ
Const(size.head.pos.y)は基点(大抵のキャラは足元)から頭までの距離ね
triggerall = Const(size.head.pos.y) < -40を満たしてるなら、その試合中どう足掻いても
triggerall = Const(size.head.pos.y) >= -40を満たすことは無い
-
質問です。
キャラ側からステージBGMの速度を変えることは出来るものですか?
|
|
掲示板管理者へ連絡
無料レンタル掲示板