レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
製作お助け掲示板
製作で困ったことがあれば
質問をどうぞ
どんな初歩的な質問でも
キャラ製作の先人達がやさしくお答えいたします。
ただし教えてくれた内容が間違っていても怒らないように。
だれにでも間違いはあります。
ココで得た知識を吸収し、教える側に回れるように精進しましょう。
また
先人達も知識がさび付かないように、理解をより深めるために
お互いに知識を出し合い、高め合いましょう。
cns記述の流れるような動きとかストライカーとか応用の段階でつまづく人は多いと思う
私もphysics=Nでのセルフ着地記述が未だにヘタです。
しかもVelの概念が「1FでXピクセル移動する」意味だと気付くまで半年かかったというw
>Velの概念
そんなの全く知らないまま4キャラ(実質3キャラ)作っちゃってたぜおいィ?
偶にブログにCNS記述のことで検索かけてくる人が居て申し訳ない気分になるねー
雑談の方で質問させていただいていた削れないガードなんですけど
昔回復式で作ってて失敗したと思ってたものが実は機能していたことが判明しましたw
ただ、体力が0になった時強制的に喰らいステートに以降し、死亡判定を行う(?)仕様があるっぽくて
削り殺されないガードは出来るんですけど、ガードが崩されてしまうという…。
うーん、ちょっと承太郎で研究してみます。。。
>しかもVelの概念が「1FでXピクセル移動する」意味だと気付くまで半年かかったというw
CNSいじりはしめて半月立つ前に知れてよかった・・・
CNSは微妙臭いので教える側になるまでには大分時間がかかりそうですが・・・。
簡単な質問で申し訳ないのですが、和訳KFMをベースにとあるキャラを製作しているのですが、超必殺技等のヒットを多段攻撃に変えたいのですが、どこを弄ればよいのやら?
突進系の技ってどうやって作ってんだろうか?
あと、バルバトスやOG氏の雛子が使ってくる鋼体ってどうやったらできるのだろうか?
一気に質問して申し訳ないです;;;
>>7
突進と多段ヒット、
私もそれ気になりますっ!
>>7
一般的かどうかわかりませんが解る範囲で。
>多段攻撃
竜巻旋風脚みたいな技であればヒットするアニメ一枚一枚に対しhitdefを用意して
triggerにそれぞれのanimelemを入れればオッケーです。
なお、同じ絵で複数回当てる時はairファイルに当てる回数分同じ絵を入れておく必要があります。
ロックする乱舞系の技は作ったこと無いですが、hitdefにp2statenoを入れてstateを奪い、
技ごとの適切な位置で適切なポーズを取らせればオッケー。…だと思う。投げが作れれば作れると思います。
>突進系
これは簡単。突進したいフレームやアニメをtriggerにいれてvelsetもしくはveladdで速度を決めるだけです。
velsetの場合はもう一度velsetを使いとめたいタイミングで止めます。サイコクラッシャーとかは多分こっち。
veladdの場合は立ち状態だと摩擦で速度が減少していき勝手に止まります。ただtriggerにtime=0とか入れないと加速し続けます。
慣性を残しつつ別の技でキャンセルかけて移動必殺技とか出来るようにしたいならこっちが便利です。スライディングとかにも。
相手をすり抜けたいときはPlayerPushも使います。
>鋼体
アーマーと基本は同じはず。相手の攻撃を受けるたびに減少するvarを作っておき、var!=0をtriggerにアーマー状態を作ります。
var=0の時喰らい状態でなければvarset,20とすると鋼体20になるはず。
アーマーの作り方は怪しいので誰か他の方にお任せしますー。
>>9
丁寧にありがとうございますー
む・・・難しい(@@;)
よしきたまかせろアーマー処理なら多少わかるぜ!
これにはヘルパーアーマー方式とHitoveride方式の2種類があるんです。
処理が比較的簡単なのでヘルパーアーマー方式を軽く解説
端的にいえば
・本体を無敵にする
・ヘルパーを出し、本体にアニメと座標を追従させ、代わりに攻撃を受けさせる
この2つが軸です(続く)
僕も別角度から大雑把に解説
>多段ヒット
hitdefをたくさん出現させてください。
具体的に言うと
triger = time >= 0
にしてください。
20F赤枠が出ていると20回ヒットします。
>突進
[Statedef 200]
type = S
movetype= A
physics = S
juggle = 0
ctrl = 0
anim = 200
これを
[Statedef 200]
type = S
movetype= A
physics = S
juggle = 0
anim = 200
ctrl = 0
vel = 20,0
こうしてください。
>鋼体
アーマーかなにかですよね。
changestate
を
trigger = movetyp = H
で
value = prevestateno
にして
statedef-1
に入れてください。
ヘルパー側はPlayerPushとNotHitbyを適用し、保険としてAssertSpecialで影ごと消す
更にHitOverRideを用いてステートを固定、LifeAddでダメージを適用してやればOKです。
常時監視にIsHelper制限を追加しないとバグる可能性があるのと、打撃投げ(Hitdef.attr=Nでない)が当たらないのがデメリットですが
この方式の場合、管理するステートが極少数で済むので記述の把握がしやすいため逆にバグが減るのがメリット(凄く扱いやすいです)
具体的な記述を載せようと思ったんだけど、板的に長くなるので自重なりー
>>12 の、YESさんが書いた記述だと
技の途中で攻撃を喰らった場合「ゼロから技を出し直す」形になります。
そういう仕様(のりもの、とかのアーマーは大概コレ)なら、それでいいんですが…
バルバトスの鋼体みたいに文字通り「怯まない」アーマーを作りたい場合は、ヘルパーアーマー方式ですね。
相手の攻撃が当たった際のヒットポーズとかをどうするか考えてあげるetc色々と工夫する点はありますけれど
はええw 皆様ありがとうございます。これで少しは内部設定が捗り―――――と言いたいところだった。
Error message: Command 5 "BA"missing command parameter
Error in キャラ名.cmb
Error loding chars/キャラ名/キャラ名.def
Error loding p1
というエラーメッセージが発生して戦闘に移行しない。
なんだこりゃ?;;;;原因なんぞもちろん駆け出しの自分には理解不能。
知恵を誰か貸してください・・・・(・・;
>>15
コマンド定義が足りないだけだと思われます。
和訳版kfmのcmdファイルを参考にして、適宜必要なコマンド定義を追加してやればおk。
≫16
格闘はし続けましたが、コマンド定義に異常は自分からしてはなかった、と思います。
基本的には他の場所にあったCommandをマルコピしてそこから改変したので。
ステート定義にも異常はないはず。では、なぜエラーが吐き出される?
解せぬ・・・・詰んだか?;;;;
いや、どう考えてもコマンド定義が足りませんエラーだと思います。
エラーメッセージを和訳すると
「「BA」というコマンドがトリガーとして使われているけど、こんなコマンドCMD内で定義されてねーぞ!」って感じですのぅ
CMDのコマンド定義箇所に
[Command]
name = "BA"
command = b, a
とか追加してやれば、とりあえずエラー吐かないと思います…たぶん
>>17
直訳すると
存在しないコマンドを指定した
ですね。
駆け出し以下の私にはわからないのです@@;;
ごめんなさい引っ込んでます。
最終的には最初から用意されていた方の超必殺コマンドを微改変してやってほか、色々常時監視ステートとか、カンフースルーに関するエラーが飛び出すわで苦労しましたがなんとか起動できました。
元々用意する技も3,4種類と結構少ないので流用程度で済みそうです。
・・・・自作で作ってみたコマンドをエラーで吐き出されるとかショックでかすぎるぞ・・・・。
何が違うってんだ・・・・?
てか、−2ステを記載した奴がエラー吐いた・・・・。これではアーマーどころの話じゃないな・・・・
がむばってくだされ
1年ちょい触ってますが、私も未だに理解しきれませぬw
おぉ、いつの間にかこんな所が出来てたんですか。なら折角なので質問です。
とある東方キャラの製作中で、追尾式飛び道具を作っているのですが、helperの数を極力抑えるため、projectile式にしたところ、
グレイズは出来るがprojectile式飛び道具に対して相殺が出来ないという状況になりました。
helper式飛び道具とは相殺出来るのですが、projectile相手だと一方的に打ち消したりすり抜けたりして困っています。
projContactTimeはちゃんと反応するのにprojCancelTimeは反応しないのが原因なのですが、そこが分からんとです。
projContactTimeとprojCancelTimeって1になるタイミングが違うんでしょうか…
CNSは初めの頃はほぼコピペでもガンガンエラー吐きまくりますし、
原因不明すぎて血管ブチ切れそうになることも多々ありますし、
慣れてきて新しいことにチャレンジしようと思うと全く上手くいかなかったりしますが、
諦めずに頑張り続けて独自の複雑なシステムが出来た時とか
思い通りの動きが無事に完成した時なんかはすごく嬉しいものですよ!
全くふざけたツンデレ野郎です。…誰か擬人化してキャラ作成してくれn(ry
>>22 !!
projectile式でもグレイズできたんだ!?
知らなかった!ぼくがんばっちゃう!
>>22
projの飛び道具をグレイズ可にする仕組みもprojCancelTimeの詳細も一体どういう状況かもわからないんですけど
可能性の一つとしてprojremanimもしくはprojcancelanimを設定していて、
そのアニメの時間の分projContactTimeとprojCancelTimeにズレが生じているというパターンがありえるかもしれません。
んー、projremanimもprojcancelanimも設定していないので何とも…
ちなみにprojectileにグレイズさせるのは、
1.飛び道具の位置を全てvarで管理する
また、別のvar(仮にvar(10)とする)で相手と接触、相手がダッシュ中、それ以外、の3つの状況を判断(左から順に1、-1、0)
2.projremovetime = 1 のprojectileを1フレーム毎に発射
この時、var(10) = -1で当たり判定無しの、var(10) = 0の時当たり判定有りの弾を出す様にする(var(10) = 1なら出さない)
3.var(10) = -1且つ相手が飛び道具の位置から一定範囲以内(当たり判定より大きめ)にいる時にvar(10) = 1にする
4.projContactTime(〜) = 1の時もvar(10) = 1にする
これでprojectile式飛び道具にグレイズさせています。ちなみにこの弾は追尾式なので相手との角度やらを更に別のvarで指定してやる必要がありますが、
helper1つ使用するだけで、頑張れば8〜9の追尾弾が出せます。
4番が機能していなかったら1フレーム毎に飛び道具が出てもの凄い多段ヒットするんですが、1ヒットしかしていないのでちゃんと機能しているはず。
なのにprojCancelTime(〜) = 1だと機能してくれない…
東方キャラと対戦する時、弾を打ち消せるのと弾をグレイズ出来るの、どっちがあった方が良いんでしょうか。
グレイズだけで良いならこのまま実装したいんですけどねぇ…
自分で試したわけではないのですが、ちょっと調べてみたところprojCancelTime(〜)は
最後に放出したprojがidの番号だった時に有効なトリガーだという記述を見つけました。
おそらく多数同時に出す場合このトリガーでは対応できない仕様だと思います。
机上論の代案ですがprojremovetime = 2の別idのprojをgametime%2=1とgametime%2=0でだして
NumProjID(〜)で判断すればいけるんじゃないだろうか。
まぁ、こういう思いつきは大体やってみると勘違いが多くて無理なものなんですけど、気が向きましたらお試しください。
2hitしちゃいますがダメージを半減させれば…あり…か?
>>22
なかなか歯ごたえのある問題ですね。
答えが気になる。
関係する記述をまるまるtxtファイルでドット絵板のアップローダーに上げてください。
あと、
>helper式飛び道具とは相殺出来るのですが、projectile相手だと一方的に打ち消したりすり抜けたり
とありますが、helper、projectileの違いが原因だと判断した理由を教えてください。例外とか無かったですか?
相殺関係は相手の記述が原因なんてこともよくあります。
それと、その記述を使った同じ飛び道具をぶつけたときにどうなるか教えてください。
お邪魔します。
現在自作キャラのウサギくんのAIをちょこちょこ作ってるんですが、大体どの程度の強さにすればいいんですかね?
㍻㌢氏のAI説明書をベースに作ってるんで一応レベル制なんですが、最高レベルの10(10以上にもできますが無視)で対AI戦を基本にしていて、
そのレベルでどの程度の強さなら具合がいいのかなぁ、と。
(以前絵板のほうでエラーで落ちてしまって云々言ってましたが、あれの原因は綴りミスと記述の抜けでした。var→ver、var(**)→(**) …我ながらアホすぎる)
現時点では、デフォのカンフーマンには問題なく勝ちます。対人用の弱めのAIにもまぁ勝ちます。
でも今はちょっと射撃と設置に頼りすぎで…。かと言って接近戦できるほど通常技は強くないジレンマ。
そして通常技でダメージを稼ぐ時に必須の空中コンボをAIにやらせるのが難しすぎてどうしようもない。
後、今更ながらウサギくんはヘルパー使いすぎかもしれないと思った。一度の射撃でヘルパー6個使うんですよね…。
画面に残る時間が少し長い射撃なんで、状況によっては射撃だけでヘルパー18個くらい。
ヘルパー表示数の上限上げてねって注意書きはしてるにしてももっと減らす努力をしたほうがいいんだろうけどぶっちゃけどうすればいいかよくわからない。
どういう射撃なら一発で6つヘルパーを使うのかを教えて頂けないとサッパリでするよー
>グレイズさせる飛び道具
私も結論が気になる。
記述読みに行ってきます。
>>28
とりあえず問題の記述をアップローダに置いときました。
とりあえず今分かっているのは
1.同じ弾相手にはすり抜ける
2.projectile式飛び道具の内、一回しか放出しないものは一方的に打ち消す
helper本体に当たり判定が無く、飛び道具本体がprojectileの場合も一方的に打ち消す
helper本体に当たり判定があるものとは相殺(相殺強度が高いものは、相殺回数分当たってから相殺)
但し、hitflagにPが無いものとは当たらずにすり抜ける
ちなみに判断は、Pots氏のご乱心に飛び道具を当てた後、実際の記述とairファイルを見て行っています。
多分、helper本体(hitflagにP有り)への接触はprojContactTimeで取れるから相殺出来るものかと。
問題は、projectile本体に当たり判定がある場合、放出が一回きりのものは一方的に打ち消し、
自分が出している様な、1フレーム毎に放出する様なものとはすり抜けるという事態。
要するに、projectile同士の接触の部分に問題があるわけで、結局行き着く先はprojCancelTimeなんですよね。
自分も放出を一回にすれば相殺自体は出来るのですが、そうすると追尾もグレイズも仕込めなくなるので…
ちょっと失礼します。
今作ってるキャラで原作再現をしたいのがあるのですが、
「徐々に前に進んでいき、攻撃を食らうと空中判定」
というのが原作です。
突進は大体把握したのですが空中判定、つまり
攻撃を食らうと浮き、若干(かなり小さく)吹き飛ぶというのは
できるのでしょうか。
わかる方、ご回答お願いします
とりあえず、ヘルパー式アーマーの搭載を今やっているが、本体とヘルパーの2つが同時に出てしまう・・・;
ヘルパーは操作できないけどアーマ化され、操作できる方は普通のキャラ。
なにをどうしたら・・・・;
>>32
statedefのtypeをAにしておけば良いんじゃなかろうか。若しくはStateTypeSetで指定するか。
要は自分が空中にいる扱いになれば良い訳だから。
>>34
ありがとうございます!
後々試してみますね
>>33
状況がわかりにくいですが、恐らくヘルパーアーマーはそれで合ってます。
ただヘルパーのほうのステートに
[State -2, 1]
type = AssertSpecial
trigger1 = 1
flag = noshadow
flag2 = invisible
ignorehitpause = 1
って入れておけばいいかと。
あと念のため書いておきますが、Bindtoparentで本体に追尾させるのも忘れないで下さい。
同意
あってますな、たぶんそれで
ステコンが足りてないんでしょう。 原理を理解すると単純なんですけど
[State x, PlayerPush]
type = PlayerPush
trigger1= IsHelper(x)
value = 1
ignorehitpause = 1
[State x, AssertSpecial]
type = AssertSpecial
trigger1= IsHelper(x)
flag = Invisible
flag2 = noShadow
ignorehitpause = 1
;------------------------[アニメ追従]
[State x, BindtoRoot]
type = BindtoRoot(Parentでも良い)
trigger1= IsHelper(x)
ignorehitpause = 1
[State x, Turn]
type = Turn
trigger1= IsHelper(x)
trigger1= Facing != Root,Facing
ignorehitpause = 1
;------------------------[被弾処理]
[State x, HitOverRide]
type = HitOverRide
trigger1= IsHelper(x)
time = -1
attr = SCA,AA,AP
slot = 0
stateno = x
ignorehitpause = 1
[State x, ChangeAnim]
type = ChangeAnim
trigger1= IsHelper(x)
trigger1= Anim != Root,Anim
value = Root,Anim
ignorehitpause = 1
ヘルパー側に、こんなステコン追加すればOKなハズ
そうそう、ある程度は自分で考えないと理屈が頭に入らないので応用が効かなくなりますぜ
現在方向キーとボタン同時押し技の製作中なのですが、6xは普通に出るのですが6Yの方は相手に密着して押している状態だと出ません。
CMDは
[State -1, ブリハマチアッパー]
type = ChangeState
value = 250
triggerall = (command = "x") && (command = "holdfwd")
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = (stateno = 200) || (stateno = 210)|| (stateno = 400)|| (stateno = 410)
trigger2 = movecontact
[State -1, 鉄球落とし中段]
type = ChangeState
value = 260
triggerall = (command = "y") && (command = "holdfwd")
triggerall = command != "holddown"
trigger1 = statetype = S
trigger1 = ctrl
trigger2 = (stateno = 200) || (stateno = 210)|| (stateno = 400)|| (stateno = 410)
trigger2 = movecontact
となっています。(xを押すかyを押す以外は一緒なんだけどなんで?)
キャラ公開してる身なのにこのレベルの話についていけない自分・・・
>>29
強さといってもキャラによって性能が異なりますから一概には言えませんが
レベル10ならそのキャラの持てる最高精度の強さでいいんじゃないでしょうか。
あとはレベルが低くなるにつれてガードの固さやコンボの成功率が落ちるとか・・・
自分はヘルパーは画像表示だけなら極力Explodに
複雑な動きの攻撃でなければヘルパーにProjectileくっつけたり、と
できるだけ節約するようにしてますがその程度の話ですかね。
自分も状況がわからないのでちょっと・・・
あとでウサギくんのCNS見てみます。
>>29
>どの程度の強さ
1のときAI発動して無い方が強いレベル。
5のとき戦っていて楽しいレベル。
10のとき勝つために一切の手抜きなしの全力
な感じじゃないでしょうか。
>ヘルパー使いすぎかもしれない
最大18個ならば減らさなくてもいいと思います。
どうしても減らしたいときは、
技の詳細(技名など)を教えていただければ一緒に考えますよ。
>>31
申し訳ないですが
"旧"ドット絵板のアップローダーに同じものを上げてください。
>>39
6xの方は相手に密着して押している状態でも出るって事ですよね。
不思議ですね‥。
この記述だけでは見当が付きません。
cmdファイルまるごと.txtファイルにコピペして
"旧"ドット絵板のアップローダーに上げてください。
6Yがでないとき、変わりに別の技が出たりしますか?
>>29
AI戦を想定しているということでしたら二コ動などの大会でよく見かける
凶未満のキャラの中から原作再現度が高くていいAIを搭載しているキャラを数体選び
レベル8〜9で勝ったり負けたりするくらいに調整できればかなりいいと思います。
その他のレベルは適当に行動確立を調節していけばオッケーだと思います。
>>39
問題なさそうに見えますね。。。
移動先のステートの方が怪しいかもしれません。
とりあえず2つのコマンドを入れ替えてみて、
それでも同じように6yのコマンドが機能しないのか試してみると良いと思います。
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板