- 1人でゲームが作れるように修行します。2
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の時の確定位置が変数に残っていて、こちらの位置で表示されてしまったのが理由。
| - 1人でゲームが作れるように修行します。2
313 :SGGK ◆6pZCoAtaxk [sage]:2011/09/12(月) 23:12:56.43 ID:I4CSS3jX - >>310,312
アドバイス、ありがとうございます。 書き込む前にリロードし忘れてしまい、すれ違ってしまいました。(汗; 自分のソースも似た感じの処理になってるようなのですが、 何故か原因不明でどんどん複雑化しているようです。 例えば、切り替えた状態が、知らない間に別のところで切り替えられてしまう…というような感じ。 ここから崩して作り直すのは厳しいので逆にこのまま>>252の 6.CPU選手をまずは1人登場させ、動くようにする。 7.ポジション別にCPU選手のAIを調整する。 8.タイム、スコア、勝敗、タイトル画面などの装飾要素を実装する。 を目指してソースをupできるようにして、そこからソースの見直しをしてみたいと思います。
|
|