EasyFAQ/32

Last-modified: 2008-04-24 (木) 23:59:44

コンボについて

投稿者rain
重要度
状態
カテゴリ
HSPバージョン3.1
E3Dバージョン4.0.0.7
回答

ここから下を自由に編集してください。
上の投稿情報は安易に編集するとFAQリストのリストアップに支障が出るものもあります。
よく分からない方は分かる人に聞いてみてください。

  • ぶちさばさんが教えてくださったように、アクションゲームなどのコンボの部分を自分なりに作ってみたのですが、うまくいきません。自分のソースを見ても、何がおかしいのか分かりません。どこがおかしいのか教えてください。返答お願いします。http://pitoo.hp.infoseek.co.jp/source.zip -- rain? 2008-04-20 (日) 16:26:58
  • こんばんは。あのー、FAQ29の時に書き込みそびれてしまって申し訳ないと思っていたんですが、こう言う大量のモーションの連携を管理するのはMOA機能の得意分野だと思いますよ。イベントキーの組み合わせで「パンチ」「走りながらスーパーパンチ」「スーパーパンチが当たった場合にはさらにウルトラパンチに繋がる」とか、連携の設計部分までRDB2のGUI上で設定する事が出来ます。他の要素を組み合わせて「沼地では足場が悪いので走れない→スーパーパンチが出せない→ウルトラパンチまで封印されてしまう」とかいろいろとアイデアを盛り込む事が出来ると思います。ちょうど先日マルチレイヤーモーションにも対応して頂けたので、一度調べてみてはいかがでしょうか。 -- 2008-04-20 (日) 20:39:26
  • 今のソースの構造で、MOAの実装をすると、ソースのほとんどを一から作り直すような感じになってしまうので、MOAではなく、E3Dサンプルwikiにあったフィルアップモーションマスターを使うことにしました。しかも、モーションの数が40種類も -- rain? 2008-04-21 (月) 00:46:08
  • あるので、MOAでは不可能なんです。 -- rain? 2008-04-21 (月) 00:46:34
  • 見せていただいた所、713行目以降の「モーションが終了したらアイドリングに戻す」処理で、戻っていない行がありましたよ。一応直してみましたhttp://pupepo.com/kakuge_0.htmlキー入力回数を記録し、技を出すと消化するようにして置きました。中途半端にやり方を変えてしまったので、コンボモドキにしかなっていませんが、ご参考までにと言う事で。 -- pupepo? 2008-04-21 (月) 05:13:23
  • 非常に親切に返答してくださってありがとうございます!パンチモーションの最終フレームのみでパンチ2モーションへ移行するようにしているはずなんですが、Dボタンを連打していると同じモーションがなんども繰り返されてしまいます。どうしたらいいですか?いろいろ言ってすみません。ホント・・ -- rain? 2008-04-21 (月) 18:17:45
  • 最終フレームまでキーを受け付けないようにすればどうですか -- 2008-04-21 (月) 21:47:07
  • まず”Dキー入力”+”モーション中”=”次のモーション”と言うのが基本的な考え方ですよね。キー入力は”pushD”、次のモーションは"kakutou2_combo"で設定されるんですね。プレーヤーがバシバシとキー入力を繰り返す場合なら、プログラムは「それは次のモーションへ進めって事ですね。一度言ってもらえばわかるんですけどねえ」と言う判断をします。つまり入力回数ではなく「モーション中にDキー入力があったよ」と記録すればいいはずです。私が書き換えてしまったコンボモドキなやり方は、まさに入力回数を保存する方式だったので、この場合には余計なおせっかいになってしまったようです。お手軽コンボシステムにはなっていますが「モーション再生のタイミングに合わせて、ポン♪ポン♪ポ♪ポ♪ポン♪と、リズミカルに入力した方が確実にコンボできる」と言う、カクゲーのコツに関わる部分ですし。となると、少し大がかりにスクリプトを書き換える必要が出てくるかも知れません。例えば644行目の”if pushD=1 & kakutou2_combo=1 & curmk2=mk2_punch : kakutou2_combo=2”は”if pushD=1 & curmk2=mk2_punch : kakutou2_combo=2 ”でいいのかも知れません。ここに”現在のモーションが終わった”情報が加わった時、はじめて実際のモーションとして”kakutou2_combo=2”つまり” curmk2=mk2_punch2”が指定されればいいわけです。その為の情報の保存と消化の為には”pushD”変数が用意されているわけですから、601行目の”getkey d,68 :if d=1:pushD++:else:pushD=0”を”getkey d,68 :if d=1:pushD=1”にして、”kakutou2_combo”が変更された時、同じ行で"pushD=0"にすればいいはずです。このキー入力情報の保存と消化と言う部分を 見直しされると「押しても押しても小パンチ」と言う問題も解決できるかも知れません。 -- pupepo? 2008-04-22 (火) 00:07:55
  • ↑なんか歯切れの悪い文章になってしまってすいません。実は私自身HSP3.1で登場したラベル変数と言う新機能を使って「ミもフタもないぐらいきれいなスクリプトが書ける!はず!」と言う事にチャレンジ中でして、癖のある書き方を直そうとしている最中なんです。メインループの中に何10行もIF~GOSUBが入っていたような場合でも、ラベル変数に行き先ラベルを流し込めば1行で済みます。こう言うやり方はモロにイベント管理に関わるので、あとで「こう言う書き方もありますよ」とか言ってしまったら「先に言えよ~!」と言う事になってしまいますよね。で、なんとも中途半端な文章になってしまったんですが、これは歓迎するべき変化だと思いますので、rainさんも一度調べてみてはいかがでしょうか? -- pupepo? 2008-04-22 (火) 02:55:50
  • 返事が送れてしまってすみません。思えばわざわざkakutou2_comboとかいう変数なんていらないかも知れないですね。市販のゲームをやってみると、たいていは攻撃モーションの最後には追加コマンド入力時間があり、その間にコマンドが入力されれば即座に次のモーションに移るようになってますね。ですから、 if pushD=1 & curmk2=mk2_idling : newmk2=mk2_punch : endframeno2=max2_punch : fillupflag = 1だけでよかったみたいです。コンボってけっこう単純なもののようですね。(本当にこれであっているのか、何かこの方法で問題点はないのかはまだ分かりませんが)  ラベル変数ですか。調べてみて、使えるようなら使ってみようと思います。返答ありがとうございました。 -- rain? 2008-04-23 (水) 22:58:58
  • 間違えました。訂正 if pushD=1 & curmk2=mk2_punch & frameno5>=max2_punch-6 : newmk2=mk2_punch2 : endframeno2=max2_punch2 : fillupflag = 1 -- rain? 2008-04-23 (水) 22:59:57