トップページgamedev
982コメント350KB

アクションゲーム製作総合スレッド Part1

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。04/09/26 23:35:52ID:U/f0VG3h
ワンキーゲーから格ゲーまで、様々なジャンルの基礎とも呼べるアクションゲーム。
このスレでは、そんなアクションゲームの製作技術や技術の検証、成功談
失敗談笑い話、難易度の設定方法論などについて語り合いましょう。
もちろん自分の作ったアクションゲームを晒してみたり、
プロジェクトをはじめてみるなどもOK!

ただし、アクションゲームの未来とか既存のゲームの話題などは、関連する他の
スレでやってくれ。
0317名前は開発中のものです。05/01/18 00:54:35ID:ydi2Mvvf
>>316
PeekMessageループとマルチスレッドを併用すると、
悲惨な現象がいくつも発生する。

まず、PeekMessageループはCPU稼働率を100%に押し上げる。

CPU稼働率100%の状態でマルチスレッドを使用すると、
マルチスレッドの処理は異常に重くなり、マルチスレッド
の動作期間中は、PeekMessageループの処理もガクガクになる。

あと、CPU稼働率を100%にしていると、ファンの音はウルサイし、
並列動作させてる別のアプリが異常に重くなるわ、Windowsは
動作不安定になるわ、マウスはマトモに反応しなくなるわ・・・

まあ、Pentium4以上ならCPUの追加機能があるから、
こうした現象は、発生しないかもね。
0318名前は開発中のものです。05/01/18 01:54:12ID:fRzX6xxO
PeekMessageというAPIは、貧弱なCPUを100%利用しつつ、かつ、
Windowsの動作も行うための命令だったと、漏れは思ってる。

けれども今は、マルチスレッドで同期を取りつつブン回しても、
普通のCPUでもパフォーマンス的には同等近い速度が出せるし、
さらに、Hyper-Threadingに対応したCPUなら、同じCPU稼働率
100%でも、マルチスレッドの方が高速になりかねん。

その意味では、PeekMessageループは、今は、
ほとんど不用なAPIでないかと思うんだよな。
0319名前は開発中のものです。05/01/18 02:10:18ID:1XF5tIKv
「PeekMessageループ」などというAPIは存在しない。というのは置いといても、
普通Sleep(1)、最悪でもSleep(0)をはさんどくもんじゃないのか?
0320名前は開発中のものです。05/01/18 07:36:34ID:lXPOJuNH
OSとのやり取りが不安定になるだろ。
ただでさえ操作性が気になるジャンルなんだし、
DirectInputとのやり取りが不安定になるのは、勘弁してほしい。
0321名前は開発中のものです。05/01/18 08:01:45ID:bnzqLo0Q
そうなのか。俺は
while(1)
{
 if(::PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
 {// メッセージがあるか調べる
  if(!::GetMessage(&msg, NULL, 0, 0))
  {// メッセージがとれない
   break;
  }

  ::TranslateMessage(&msg);
  ::DispatchMessage(&msg);
 }
 else// メッセージがないのなら独自の処理を
 {
  ::MsgWaitForMultipleObjects(0, NULL, FALSE, (ゲーム処理にかかった時間から適切な止める時間), QS_ALLINPUT);
  ゲームアップデート();
 }
}
ってのがデフォだと思ってた_| ̄|○
0322名前は開発中のものです。05/01/18 19:06:23ID:X88J3aOH
私は次のように解釈しています。

1) PeekMessage() だけでメッセージ(メイン)ループ
→ CPU 使用率 100%
→ 消費電力、発熱、Windows アプリとしての行儀の悪さが気になる。
2) フレーム毎に Sleep(0) を挿入する
→ プロセスの CPU 占有は解消できる。
→ システムは依然として CPU 100% を示す。過剰発熱は続く。
3) フレーム毎に Sleep(n) を挿入する
→ 余剰時間を待機する。CPU を解放できる。
→ ただし Sleep 中はメッセージループが滞ってしまう。やはり行儀が悪い。
4) そこでマルチスレッド。
  メッセージループとメインループのスレッドを分ける。
  ここで PeekMessage() すると (1) に戻ってしまうので GetMessage() を使う。
  メインループは Sleep(n) などで fps を調節する。

ただ、ttp://homepage1.nifty.com/bee/tk/timer.html には
「GetMessage() はスレッドを停止しない」とあります。
PeekMessage() + WaitMessage() で代替すべきなのかも。
0323名前は開発中のものです。05/01/18 22:17:15ID:OsP497Jz
Sleep(n)で制御を他に渡すと、fpsの精度が(せっかくtimeBeginPeriodしてても)維持できない気が。
0324名前は開発中のものです。05/01/18 22:53:48ID:v1uoKNWT
まずは実験してみましょう。たまたま同じタイミングで
複数の重い処理が同時に実行される、なんて事がない限り、
気にならないと思うよ。
0325名前は開発中のものです。05/01/19 02:29:32ID:tOpn/RpV
Sleep(n)はtimeBeginPeriodしても制度が問題になることが多いよ
Sleepはなんだかんだで精度が保障されないしね

たとえば次のフレームまで10msあいているのなら5msあけて
そのあと役5msくらいsleep(0)で監視とかそういう小手先のテクが必要になる

ちなみにSleep(n)でやばいのはノート系、とくにPentiumM搭載マシンは
デフォの電源管理がデスクトップになっていないので可変クロックなわけだが
Sleepで1以上をつかうとまったく安定しないのがよくわかる

いまやPentiumMはデスクトップでもかなりの分野で使われているので
これを考慮しないというのはもはやありえないべ
0326名前は開発中のものです。05/01/19 03:00:23ID:ibNY0vPj
sleepがダメなら何を使えばCPUを100%にさせずにFPSを維持させるんだ?
0327名前は開発中のものです。05/01/19 03:13:09ID:tOpn/RpV
基本的にリアルタイムOS使ってない時点で妥協するしかあるまい
0328名前は開発中のものです。05/01/19 07:54:38ID:KlNdNs9J
>>326
俺は規定時間を満たさないなら(例えば1フレーム16ミリ秒)、Whileループさせてたけれど。
でも結局Sleepと同じか。
0329名前は開発中のものです。05/01/19 11:21:05ID:etvgdar6
ただのループ待ちだとCPUがMAXに熱くならない?
0330名前は開発中のものです。05/01/19 21:12:30ID:aKYZjqz+
試しに 東方永夜抄 と Queen of Heart 99 で試してみましたが、
やぱCPU使用率100%になりますね。
ゲームだと100%になるのはしょうがないのかな。
エロゲとかはまた違うんだろうか。
0331名前は開発中のものです。05/01/19 23:23:50ID:kI8iKu4Y
こうなったらゲーム用のOSが欲しくなるな。
0332名前は開発中のものです。05/01/20 00:33:28ID:1MmCAp1f
最近のマシンはCDから起動できるんだからそれ使えば
main()からブートするのがさくっとつくれるとおもわれ

ただし、ビデオカードとかサウンドカードとかつかえないけどなー
公開されているパーツを集めてきて組み立てるのだ

まぁ86系の場合boot面倒だからやるひとあまりいないとおもうけど
昔のPCの感覚でつかえるはずだ
0333名前は開発中のものです。05/01/20 00:33:50ID:wKUxX6sK
>>328
Sleepより悪い。というか最悪。
0334名前は開発中のものです。05/01/20 01:05:45ID:UKmHVJSG
誰か>>332を解説してくれ
0335名前は開発中のものです。05/01/20 01:09:15ID:DPMkEMAS
俺からも頼む
0336名前は開発中のものです。05/01/20 01:23:02ID:cRp2WmOq
スレッドはビジーループさせてもCPU100%いかないの?
0337名前は開発中のものです。05/01/20 07:31:09ID:2l+XOu2v
>>336
100%稼働させても、GetMessageなら安定動作してくれる。
まあ、スレッドの優先順位にもよるらしいが。
0338名前は開発中のものです。05/01/20 07:34:11ID:Ref4TFhU
意訳

1段落目:
自分で1からOSを作ってブート可能なCD作ればいいじゃん
(2行目は意味不明)

2段落:
翻訳不可能
ドライバのことだろうか?

3段落目:
(省略)


OS作ること自体は難しいだろうけど不可能じゃないよね
OSを作ろうpart9
ttp://pc5.2ch.net/test/read.cgi/tech/1076217479/
0339名前は開発中のものです。05/01/20 14:19:24ID:XBff+/Qh
シングルスレッドならブートローダーさえあれば、OSは必要ないでしょ。

多分>>332は、こう言いたいと思われ
「一気にプログラム&データ読み込んでリセットベクタにエントリーすればフルパワーで全エリア使い放題」
0340名前は開発中のものです。05/01/20 18:56:59ID:DvGagJ0Z
記憶媒体が無いと記憶させれんぞ。
それぞれの記憶媒体に対応させるデバドラは、どうすんだ?
0341名前は開発中のものです。05/01/20 20:46:10ID:U3Hu7z70
むしろMS-DOSでやれ。
0342名前は開発中のものです。05/01/20 23:27:48ID:Cat713Cg
LinuxとSDL使えばそれなりにできそうな気もする。激しく面倒そうだが。
記憶媒体はFDかUSBメモリあたりが妥当か?
0343名前は開発中のものです。05/01/21 00:58:36ID:ZvargaUa
>>342

Linuxという時点ですでにリアルタイム性が
割り込み応答でサウンドドライバ掛けたりラスタースクロールでいるくらいの応答性があれば問題なし
0344名前は開発中のものです。05/01/21 01:15:21ID:IN7lhuFe
>>343
ディスプレイによって画像同期周波数の違ってる問題とか、
どうするんだ?

>>331
漏れ的には、PCで自由に開発出来るゲーム機が欲しいな。
実行させるだけならPCでもできるが、ゲーム機なら、
統一環境で実行させられる、みたいな感じで。
XBoxにはそーゆーのを期待してたんだが・・・
0345名前は開発中のものです。05/01/21 01:18:33ID:JDbvAaFT
>>344
そこでコンソールプログラミングですよ!
XboxやGCはまだ敷居は高いですがお手軽なGBA、
ちょっと本格的にやりたいならDCなど各種取り揃えております。
0346名前は開発中のものです。05/01/21 01:30:06ID:MlXISHIM
PCで開発できて、PCでもゲーム機でも、
誰もが遊べる点がポイントな。
0347名前は開発中のものです。05/01/21 01:34:39ID:MlXISHIM
特殊な環境がないとPCでは遊べないとか、そーゆーのでは駄目。
一般人のPCでも、ゲームとして遊べないとな。
0348名前は開発中のものです。05/01/21 02:31:38ID:V/hhRqKz
つまり、次のWindowsにXBoxエミュレータが標準搭載され、
次のVisual C++でXBoxのソフト開発が出来ればOKと。
034922705/01/21 06:00:37ID:rVO9zRuX
>>312
PeekMessage関連は、何れ調べてみます。
現在はappWizが生成したコードまんまです。
見たところ、アクティブである場合>PeekMessage
ない場合>GetMessage
をコールしてるようです。
アクティブってのが、多分フォーカスとかも含んでるのかな?と。
0350名前は開発中のものです。05/01/21 06:45:18ID:6gp8NAog
>>346
ゲーム機メーカーはどうやって利益を上げるんだ。
0351名前は開発中のものです。05/01/21 06:57:11ID:IAlZHZ67
アクションゲーム製作総合スレッド・・・
0352名前は開発中のものです。05/01/21 17:18:31ID:i4hNq7ja
シューティングスレが寂しくなったので、ここでクダまいてるだけ
0353名前は開発中のものです。05/01/21 20:27:46ID:dR3s8yKc
>>350
音楽CDと同じで、面白いゲーム作れば売れるだろうし、
つまんねーゲーム作れば割れ厨の餌になる。ただそれだけの話だ。
要するに、つまんねーゲーム出してる所はさっさと潰れろと。
0354名前は開発中のものです。05/01/21 20:41:37ID:dR3s8yKc
>>350
新品のPCの方がゲーム機の性能より上かもしれんが、
中古PC性能はゲーム機より下。中古PCで遊んで、
面白かったらゲーム機を買うヤシだっているだろ。
そもそも、PCは仕事でしか使わないから性能イラネ!
ってヤシも珍しくないし。

漏れなんて、3Dは未だにオンボードチップ使ってる。
0355名前は開発中のものです。05/01/21 20:42:52ID:dR3s8yKc
>>350
利益出てるのか?
0356名前は開発中のものです。05/01/21 20:57:53ID:dR3s8yKc
>>350
あと、利益の出し方は商売がうまいかヘタかの問題だしな。
少なくとも、PCはいらないけれどもPCゲームは遊びたい
という人なら買うだろ。
0357名前は開発中のものです。05/01/21 20:59:35ID:dR3s8yKc
さてと、アクションゲームの話に戻すか。
藻前ら、ツールはどこまで作り込んでいますか?
0358名前は開発中のものです。05/01/21 21:04:47ID:dR3s8yKc
>>346
フリーウェアが大量に出回りそうだな・・・
0359名前は開発中のものです。05/01/21 21:24:33ID:Hoy2oMgd
よくできたコントだ
0360名前は開発中のものです。05/01/21 23:23:10ID:UuLd6x2c
誰もが作れるほど敷居が低すぎると、クソゲーが増えて良作が埋もれる法則。
昔な、アメリカでアタリショックっていう現象があったんだ。
0361名前は開発中のものです。05/01/22 01:25:19ID:4Gqz2KBw
>>353-356
ゲーム機メーカーはそのハード用ゲームのライセンス料をゲーム製作メーカーから
取る事が主な収益構造だと思ったんだが。
その点で、だれでもタダ(あるいは安く)でつくれたら、どうやって儲けるんだって話。
0362名前は開発中のものです。05/01/22 02:02:53ID:SMeoGQLY
MSX
0363名前は開発中のものです。05/01/22 04:14:06ID:vgSLqLDM
>>361
それでようやく色々と納得できた。
単に、数出せれば良いというモノでもないのな。
まあ、既に数出まくりなわけだが・・・
0364名前は開発中のものです。05/01/22 09:31:30ID:rictG3Qy
>>353-358 これ全部同じヤツの連レスかよ!

>>353-356は全部>350へのレスかよ!一回のレスで済ませろよ。つうか自演?

>357 名前:名前は開発中のものです。[sage] 投稿日:05/01/21(金) 20:59:35 ID:dR3s8yKc
>さてと、アクションゲームの話に戻すか。
>藻前ら、ツールはどこまで作り込んでいますか?

1人で勝手に過熱しといて何が「さてと」だタコ

>358 名前:名前は開発中のものです。[sage] 投稿日:05/01/21(金) 21:04:47 ID:dR3s8yKc
>>>346
>フリーウェアが大量に出回りそうだな・・・

戻ってねーじゃねーかよ!この糞が!
0365名前は開発中のものです。05/01/22 10:02:30ID:+QvrkUFh
>>364
ハゲワロス
0366350=36105/01/22 10:26:27ID:4Gqz2KBw
>>364
腹イタイ

 _no  。oO(気付かんかった……)
0367名前は開発中のものです。05/01/22 16:27:38ID:4spfk2UP
ケーブルとかでID同じ別人の可能性も一応。

「アタリショック」の嘘と誤解
ttp://d.hatena.ne.jp/hally/20040514
0368名前は開発中のものです。05/01/22 17:02:44ID:NPoqSETA
俺も以前、偶然同スレで同じIDの奴にレスしちゃって
自演呼ばわりされたことがあるけど(レス先のやつはもっと可哀想だなw)
これは違うと思うぞ…
0369名前は開発中のものです。05/01/22 17:14:09ID:y8MpdK29
マジでコントだな。
0370350=36105/01/27 21:17:55ID:tuNCjFSI
>>360
>367を踏まえると、売価0で成り立つ世界があるなら、あとはフィルタか
モデレータ構造があればよいと思う。
今現在のフリーゲーム界隈の様子を見ると、作成側も紹介側も、それぞれ
直接金を取るモデルでなくても供給があるようだ。そして機能し続けている
ように思われる。
したがって、「そんなゲームハードを出すメーカーがいる」という仮定を崩さない
ならば、>360をもってゲームハードとその界隈を心配するのは杞憂だろう。
0371名前は開発中のものです。05/02/21 04:08:25ID:WfwXUAVw
スレ過疎化しちゃってますね。

同人サイキ、新バージョンUPしてみました(殆ど変化ありませんが)
後、偽ガルーダも公開してます。
http://www.geocities.jp/psyact_dev/

スクリプトやBGMの設定が機能してないので、出来れば近々最UPしたいと思ってます。
0372名前は開発中のものです。05/02/21 12:59:35ID:sfkjYuGK
偽ガルーダ、やっぱりフルスクリーンになったあと終了しちゃうなあ。errlog出る前に終了してる。
同人サイキは起動できてerrlogも出てる。
RADEON9200、win2kでDX9、IE6。
もし楽ならウィンドウモードでの起動モードきぼんぬ
0373名前は開発中のものです。05/02/22 02:53:39ID:ikR8To/o
>>372
そうですか、、同じエンジン使ってるので、ゲーム側で何かしちゃってるのかも。
スイマセン。

config.txtというファイルがexeと同じフォルダにあるので、
FullScreenをfalseにして下さい。
偽ガルーダ、同人サイキどっちも存在します。
config.txtの設定、ホムペの方に書くの忘れてました。
追加しておきます。
0374名前は開発中のものです。05/02/22 14:36:28ID:p5aKw6II
偽ガルーダが非常に気になるのでダウンロードさせてもらいましたが、
なぜか解凍できません。
解凍中にエラーが出て、空のフォルダ「偽ガルーダ」が作成さてしまいます。
しかも、そのフォルダを消そうと思っても削除できない・・・

こんな事は初めてなのですが、
なにか特殊な圧縮方法なのでしょうか?
0375名前は開発中のものです。05/02/22 15:38:02ID:hZBZtuyr
単にダウンロードに失敗してるとか
0376名前は開発中のものです。05/02/22 15:46:25ID:p5aKw6II
今もう一度ダウンロードしてみたのですが、やはり一緒です。
ちなみに解凍ソフトは
+LhacaとWinRARを試してみました。

怖くて同人サイキの方は解凍してません・・・
0377名前は開発中のものです。05/02/22 16:03:32ID:hZBZtuyr
WinRARとeoとXP標準のzip解凍
3つともちゃんと解凍できた
1,306,864バイト
0378名前は開発中のものです。05/02/22 16:49:25ID:p5aKw6II
今XP標準の解凍を使ったら、また空のフォルダが・・・
消せないフォルダがもう一個ふえてしまいました (ノω`)・゚・。。
作成された空のフォルダ「偽ガルーダ」は、開く事もできない。。。

zipファイルのサイズは
1.24 MB (1,306,864 バイト)
でした。私のパソコン固有の問題でしょうか。
他のzipファイルは全て解凍できるのですが・・・ o(T_T)o モウダメポ
037937205/02/22 18:34:24ID:uPHZl7kd
>>373
config.txtあったのか。サンクス
ウィンドウモードだと、『0x47AA65の命令が"0x0"のメモリを参照しました』でエラー終了。errlog出る前
0380名前は開発中のものです。05/02/22 19:31:22ID:vokUp0uw
>>378
proxomitronとかファイアウォールを使っていたとかいう
オチじゃないだろうな

ダウンローダを変えるか、串もためしてみなよ。
0381名前は開発中のものです。05/02/23 03:07:40ID:Ep2lR8hE
>>378
すいません。ちょっと判らないです。
圧縮には、Explzhというソフトを使ってます。
たしかXPで標準対応してるという理由でZIPファイルを選択しました。

>>379
報告ありがとうございます。
errlogの所を見直してみます。
勘ですが、Direct3D等がdebugで再現するのかも。調べてみます。
0382名前は開発中のものです。05/03/08 15:41:18ID:fOr0Y383
孤独にぬるく作りたかったんで、VB+Flashでアクションゲーム作ることにしてみた。

プログラムはVBでぬる〜く作成。
ゲームパッド、ファイル出力、解像度の設定もVB側で。
グラフィック、アニメーションはFlash。
まあ作るのは楽。こんなオーサリングソフトは個人じゃ作れない。
アニメーションとプログラムとのタイミングも簡単にとれる。
サウンド周りも全部Flash側で鳴らせるようにした。
Flashコンポーネントひとつでいいから互換性やバグに悩まないですみ手軽。それでいて短期間で見栄えよくできた。
問題はFlashは重く、あまり沢山のオブジェクトを表示できないが工夫の余地はある。
0383名前は開発中のものです。05/03/11 12:30:44ID:2wjY2/65
角度を決めて弾を打ち出すのって、どうすればできますか?
物理得意な方お願いします。
0384名前は開発中のものです。05/03/11 12:38:40ID:qssgl8ma
指定した角度で弾を移動させればいい。物理関係ない。
038538305/03/11 12:44:58ID:2wjY2/65
x軸方向とy軸方向への移動を別々に考えて移動させてたんですけど、
角度を考えるとなると、その書き方が分からないのです。
0386名前は開発中のものです。05/03/11 12:49:11ID:wol0IT/T
>>383
>物理得意
数学

// 角度=ラジアン
x=cosf(角度)*移動量;
y=sinf(角度)*移動量;
038738305/03/11 13:16:41ID:2wjY2/65
なかなか、うまくできない・・・。
ソースアップしてもいいですか?
0388名前は開発中のものです。05/03/11 14:23:37ID:HTa5DsJA
>387
その場合、1レスに収まらないならテキストでアップロードしろよ
038938305/03/11 14:40:10ID:2wjY2/65
>>388
普通のあぷろだ37869にプロジェクトファイルごとアップしました。
なにとぞご教授おねがいします。
パスは「角度決めて発射」です。
0390名前は開発中のものです。05/03/11 14:56:01ID:cHGKos1z
ごめん、言い方が悪かったかもしれない…
丸ごと来るとは思わなかった
0391名前は開発中のものです。05/03/11 14:56:56ID:iFNRRCmz
まあまあリンクぐらい貼っとけ。
http://www.rupan.org/~kain/cgi-bin/upload/src/up37869.zip.html
0392名前は開発中のものです。05/03/11 15:11:01ID:cHGKos1z
あんまし考えないで書いたけど玉の処理はこんな感じで良いの?

tama_old_x = tama_x;
tama_old_y = tama_y;

/* 3.14/180.0はマクロ化したほうが見やすいけど面倒だから省く */
x_mov = cosf(ue*3.14/180.0)*pow;
y_mov = sinf(ue*3.14/180.0)*pow;

tama_x+=x_mov;
tama_y-=y_mov-gra;
039338305/03/11 15:17:48ID:2wjY2/65
>>392
すごい、できてますね。
ちょっと感動・・・。
039438305/03/11 15:30:44ID:2wjY2/65
ついでに、棒に当たった時の反射角はどう算出したらいいでしょうか。
この棒は30度に設定してあります。
0395名前は開発中のものです。05/03/11 16:55:54ID:BPAC//R0
うぜーーーー
0396名前は開発中のものです。05/03/11 17:06:15ID:wol0IT/T
プログラム組まない(組めない)プログラマ増殖中
0397名前は開発中のものです。05/03/11 18:29:28ID:Ajs4EMBm
それくらい検索汁。または図を描け。
0398名前は開発中のものです。05/03/11 18:55:01ID:J61NQ7VU
それこそ高校物理の世界だなー
がんばって勉強しる
039938305/03/11 18:56:11ID:2wjY2/65
がんばります。
0400名前は開発中のものです。05/03/13 16:36:38ID:fL2BiXJ1
PS2のドラゴンボールZ〜Z3みたいなゲーム作りたいorz
0401名前は開発中のものです。05/03/13 17:57:44ID:ynjg3961
ならまずアルゴリズムを理解することだ
0402名前は開発中のものです。05/03/14 07:35:22ID:JuMY8nMU
>400
目標を高く持つことはいいことじゃが
プログラミングというものはじゃな
一足飛びには身に付かんものなのじゃよ
ここはじゃな
急がば回れと言う格言通りにじゃな
ブロック崩しから始めてみてはどうじゃろか?
0403名前は開発中のものです。05/03/18 20:08:39ID:W6vbnPE1
初心者にはワンキーゲームがオススメかモナー。
0404名前は開発中のものです。05/03/20 19:24:41ID:zaNdVfwo
たしざんゲームにしとけ
0405名前は開発中のものです。05/03/20 19:38:09ID:xFvuiUNr
それって、ゲームというよりは、
「さんすう」ソフトの間違いかと。
0406名前は開発中のものです。2005/03/23(水) 00:42:53ID:3cWT/ehY
2Dのロックマンみたいなゲーム作っているんですが、
二次元配列でマップチップをちりばめてステージを
作っている場合、どうやって当たり判定するんですか??

ロックマンみたいな重力を考慮しないと駄目な
時は「自キャラの底のY座標 > 物体の頭のY座標・・・」
の様に判定して自キャラの底のY座標が入っている変数に、当たっている物体の頭のY座標
を代入するのではうまくいかないのですが、、どなたかヒントを頂けませんでしょうか。
分かりにくい文章ですみません。。
0407名前は開発中のものです。2005/03/23(水) 03:06:26ID:UGovkUa+
せっかくマップチップを使ってるんだ
マップチップで通れるか否かの判定しちゃえ

座標で考えるんじゃなくてチップ単位で処理するようにしたら楽
#座標をチップ単位に変換するのがちょっと面倒だけども
0408名前は開発中のものです。2005/03/23(水) 11:37:05ID:3cWT/ehY
>>407
なるほど…。チップが16*16の時は座標/16…?
う〜ん、もう少しヒントを頂けませんか?
0409名前は開発中のものです。2005/03/23(水) 13:15:03ID:UGovkUa+
キャラの頭,足,右手,左手の座標があったら楽

頭の部分の判定
int i;
for(i=左手/チップの大きさ;i<=右手/チップの大きさ;i++){
 if(マップの配列[i][(頭+移動量)/チップの大きさ] が通過できないチップなら){
  移動量=-(頭-((頭+移動量)/チップの大きさ*チップの大きさ+(チップの大きさ-1)-1);
 }
}

こんな感じかな
0410名前は開発中のものです。2005/03/23(水) 18:57:46ID:3cWT/ehY
おお、ありがとうございます!
早速試してみます。
0411名前は開発中のものです。2005/03/23(水) 21:58:19ID:UGovkUa+
>>409
マップの配列は[横][縦]を前提としてるからその辺注意ね
0412名前は開発中のものです。2005/03/24(木) 01:14:47ID:5VtHBaep
漠然とした質問だけれど。
アクションゲームにタスクシステムってどう?なかなか便利そうでそれで実装しようかと思ってんだが、
シューティングとかオブジェクトが多いもの向けな感じがするんだわ。3Dゼルダとかわんさか
オブジェクトが出てくるわけじゃないゲームとかだと、使ってないのかな などと思って。

どう?ってのも漠然としすぎてるんで、このスレの中にタスクシステムで実装してる人いるかな と思った次第。
0413名前は開発中のものです。2005/03/24(木) 13:41:09ID:GOe2RJsQ
409さんのサンプルを参考に、自キャラが物体に乗った時の判定を
してみました。マップは[縦][横]=[30][40]で、チップの大きさは16*16です。

int j,i;
for (j = 0; j < 30; j++) {
for (i = 0; i < 40; i++) {
if (マップの配列[j][i] が通過できないチップなら) {
if(右手X座標 > i*16 &&
左手X < i*16 + 16 &&
足Y座標 > j*16 &&
足Y座標 < j*16 + 16){
頭Y座標 = j * 16 - 21; // キャラの縦の長さが21なので引いています
フラグ = true;
} else if (右手X座標 <= i*16 || 左手X座標 >= i*16 + 16) {
フラグ = false;
}
}
}
}

フラグがfalseの時(当たっていない時)は常にY座標を減算(8ずつ)するようにしています。
でもなぜか、フラグをチェックすると常時falseになっていて、一応、物体に
乗っているのですが8めりこんでいます。。もう一度、ヒントを頂けませんでしょうか。
04144132005/03/24(木) 13:43:11ID:GOe2RJsQ
あれ、スペースが入ってない…汗
0415名前は開発中のものです。2005/03/24(木) 16:37:31ID:qEAHO4/J
行頭の半角スペースや連続した半角スペースは削除されちゃう
全角スペースに置換がてっとりばやい
0416名前は開発中のものです。2005/03/24(木) 16:53:56ID:u7Oj2rIN
>>413
8進んでめり込んだあとに判定しちゃってるからだと思う
>409のは頭+移動量になってるからめり込む前に判定に入れる
■ このスレッドは過去ログ倉庫に格納されています