1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
311: SGGK ◆6pZCoAtaxk [sage] 2011/09/12(月) 22:48:41.39 ID:I4CSS3jX 直観的に勢いでなんとか運よく直せた感じ。 1.ボールが一度しか蹴れない。 ボールと選手が当たってPRE_KEEP→KEEPの間は、その選手とボールのあたり判定をキャンセルするフラグを立てていたが、 ボールを蹴った後、そのフラグを戻していなかったので、当たり判定が無効になり、ボールに触れても 状態を変更する命令を実行しなかったから。 2.蹴ったボールを拾いにいってもボールが付いてこなくなった。 1.の理由と同じ。 3.ボールがラインをはみ出したら試合経過時間が停止し、ボールをフィールドに投げ込むまでの経過時間表示はされるが、ボールが復帰位置に表示されない。 ラインのはみ出し判定処理の内部でボールの復帰位置をセットしていたが、 セットするだけではその位置に表示されるわけではない。 enum MOVE_STATE{STOP=1,FREE,PRE_KEEP,KEEP};という4つの状態をボールに設定していたけど、 これらは同時には存在しない状態なのでswitch〜case文にしておいて、 それぞれのcaseの最後でその時点のボール位置を確定して、switch文を抜けてから 描画関数にボール位置を渡していた。ちなみに変数はstaticにしたらswitchを抜けても保持されているみたいな感じ。(自信なし) ところが何故かcase STOPのところだけ、位置を確定する命令を書き忘れていたので、 case FREEの時の確定位置が変数に残っていて、こちらの位置で表示されてしまったのが理由。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/311
317: 名前は開発中のものです。 [sage] 2011/09/14(水) 20:42:28.24 ID:tc3GEPcb 引き続き「2.ボールを配置し、試験的にマウスでクリックすると蹴ったように動くようにする」について。 ボールクラスの実装は>>310のとおりで、メソッドは、 (1) ボールの現在位置をセットし、速度は0にする:セットプレイ専用 (2) ループごとに実行する運動方程式の処理 (3) ボールの現在位置を求める (4) ボールが接触した面があった場合、法線ベクトルを引数に速度を反転させ、反発面上に位置補正する処理 (5) ボールの現在速度を求める (6) ボールに初速度を与える:キック時専用 (7) 現在位置にボールを描画する とする。(4)の反発は、まずは地面で、次にゴールポストとクロスバーにも反応するようにしておきたい。 とりあえずテスト用には、右クリックでセンターマークに(1)ボールをセット、 左クリックで最初は固定方向でも良いので(6)ボールに初期値を与える機能を呼び出す。 ポイントは、キックによる初速度、重力加速度定数、転がり減衰係数、反発係数などの物理パラメータを しっかりチューニングし、気持ちよくプレイできるバランスを見つけることに尽きる。 ちなみにメンバ変数はprivateにし、不用意に外部からフラグ操作しないこと。今後もおそらくその必要はないはず。 >>311によると「当たり判定をキャンセルするフラグ」のような意味不明なフラグを導入しているようだが、 物理的にナンセンスで実際バグの元にもなっている。発想を切り替えなければならない。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/317
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s