1人でゲームが作れるように修行します。2 (487レス)
上下前次1-新
219: SGGK ◆6pZCoAtaxk 2011/04/17(日)01:48 ID:mWz5D8BJ(2/2) AAS
そういえば以前にもdebugモードでダメでreleaseモードではOKというのは、
releaseモードではチェックがされていないだけなので、バグが無いという意味ではないとこのスレで教わったのを思い出す。
まだ、この前UPしたバージョンにちょっと書き足しただけなんだから、
どこかに内容的な間違いがあるはずと思い良く見てみると1か所あったので直してコンパイルしてみたら直った!
これがなんでヒープ壊れる事につながっていたのかは結局わからずだけど、
とりあえずすっきり。(寝)
220: SGGK ◆6pZCoAtaxk 2011/04/17(日)23:21 ID:VrjRr7OP(1) AAS
昨日は起きていたのがいつもより遅かったので書けなかったけど、
昨日の間違いというのは、メインループ内のゲーム処理関数の最初の行に書いた2行の順序が逆だったこと。
(間違い)
m_Time.countGameTime();
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
(正解)
if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();}
m_Time.countGameTime();
時間の測定はループ1回毎に時間を測定して、前回のループでの測定値との差を毎回足していくんだけど、
1回目のループでは前回のループの測定値がまだ存在しないので、差を計算しては困るので、
省8
221(1): 179 2011/04/18(月)02:43 ID:OTLjhXG7(1/2) AAS
AA省
222(1): 179 2011/04/18(月)02:55 ID:OTLjhXG7(2/2) AAS
AA省
223: SGGK ◆6pZCoAtaxk 2011/04/18(月)23:13 ID:kLP7Gc7/(1) AAS
>>221,222
ループが最速で到達した場合というのは想定してなかったので勉強になりました。
ありがとうございました。
今日は次の目標を考えて終了。
次の目標は、前半、ハーフタイム、後半、試合結果表示の4つの状態遷移実装。
224(1): SGGK ◆6pZCoAtaxk 2011/04/19(火)22:59 ID:Y5+hNJcp(1) AAS
状態遷移は以下のような感じで実装。SGGK_019のソースの頃に比べれば短くなった感じ。
でも、これに選手の前半後半の攻撃方向入れ替えや得点表示などを組み込むとなると混乱しそうな予感。
switch (m_MatchState) {
case FIRST_HALF:
if(m_Time.m_TotalGameTime >= FIRST_HALF_GAME_TIME){
m_MatchState=HALF_TIME;
m_Time.resetGameTime();
}
break;
case HALF_TIME:
省20
225: SGGK ◆6pZCoAtaxk 2011/04/20(水)22:43 ID:rAZcxTJj(1) AAS
でも、もっと良いやり方があるはずなので、
「ゲームプログラム 状態遷移」でネット検索。
以前も挫折したけど、また少しだけ調べてみるつもり。
226: 179@SLG? 2011/04/23(土)00:02 ID:EVcHPUn1(1) AAS
うーん、基地というか資源地ぽいクラスを作ったけど
中身がユニットと変わらない罠・・・
後、マウスの座標をWINDOWSのアイコンの位置から取るようにしたら
なんかバグって座標がずれてたりしたけどなんとか直した。
手間食ったけど、やっとALT+TAB押さないと違うWINDOW行けない仕様から
普通にマウスでいけるようになった(ノ∀`)
227: SGGK ◆6pZCoAtaxk 2011/04/24(日)00:01 ID:rFlUji0A(1) AAS
こちらの進捗は調べたり休んだりを繰り返しながら実質何も進まずな状態が続きそうな予感…(汗
228: SGGK ◆6pZCoAtaxk 2011/04/25(月)00:12 ID:oJBn91bE(1) AAS
>>224でも短くなった方だけど、ゲームのメイン処理の先頭にこれを書くのは
まだ長いような感じがした。それと、ゲームの時間帯の状態を表す定数と時間のリセットの処理を一緒に書くのも
後々わかりにくくなるような気がした。今はたまたま、この定数の切り替わりが起きる条件と時間のリセットが起きる条件が一緒だから
このように書けているだけなので、将来の想定外の変更を考えて分ける事を考えた。
ゲーム時間帯の状態を表す定数を決める関数を>>224の改造で作成。
>>224から時間のリセットの行を削除しただけのもの。
calMatchState()という名前にでもしておく。
そして時間のリセットを行う関数をそのあとに書けばいい。
但し、calMatchState()で先にゲーム時間帯の状態を変更されてしまうので、
状態の切り替わりが検知できるように状態を表す変数をもう一つ用意して現時点のゲーム時間帯の状態を表す定数値を保持しておく。
省11
229(1): SGGK ◆6pZCoAtaxk 2011/04/29(金)23:24 ID:r0lSNY0W(1) AAS
今、自分に負け気味な感じなのでしばらくダメかもしれない予感…。
いろいろ考えがあり、次は当たり判定をクラスで実装しようとしたけれど、
本当にクラスにした方がいいのか迷う。
当たり判定の関数を持つクラスのオブジェクトを選手やボールのオブジェクトに
メンバとして持たせるつもりだけど、時間が掛かりそうな予感。(理由は1行目)
230(1): 179 ◆SLG//siTD6 2011/05/01(日)01:09 ID:wJ8tL1/e(1) AAS
トリップてすと。
プログラムの方はサボり気味で余りすすんでないけど
とりあえずユニットから弾撃てるようにしてみた。
実験的に実装したんで中身がスカスカだけどw
>>229
当たり判定はどうするか迷うねぇ
こっちも当たり判定はかなりややこしい事になってる・・・w
231(2): SGGK ◆6pZCoAtaxk 2011/05/02(月)00:20 ID:iqr3WKp3(1) AAS
>>230
トリップの文字にSLGが入ってる!
当たり判定のクラスは、当たり判定の範囲を示す四角の情報をメンバ変数に持ち、
そのメンバ変数を取り込んで番号を付けるメンバ関数、
当たり判定をしたいオブジェクトの四角情報を取り込み、その情報を基に判定する関数があればいいかなと考えてるけど、
まだ考えてるだけで実装が進んでない状況。ヘッダファイルだけは書いてみたけど、あまり自信無し。
232: SGGK ◆6pZCoAtaxk 2011/05/08(日)00:12 ID:K9cPT3KQ(1) AAS
試行錯誤した挙句自分には>>231を実装するのは無理と判断…。
これをやりたかった理由は、選手のアニメパターンがジャンプしたりキックしたり変化した時にそれぞれに応じた
当たり判定を呼び出せるようなしくみがこの先必要なんじゃないかと思ったからだけど、とりあえず断念。
その他
今日は、ボールをメタセコイアモデルにしていたのをあえて以前の2Dに戻した。
当たり判定は、選手の足元xz平面上に32x32の矩形があるとし、
ボールも同様に8x8の矩形があるとし、これで書いてみる予定。
選手とボールが接触してなくても当たってしまうけど無視!
ジャンプしたら判定できなくなるけど、とりあえず最低限の実装を優先。
内容がかなり後退した感じ。
233(3): SGGK ◆6pZCoAtaxk 2011/05/08(日)22:55 ID:MKRAe4w3(1) AAS
今日もあまり進まず。
当たり判定クラスの中に作った矩形当たり判定用メンバ関数は最初は、
bool CollisionCheck::isHit(FieldPlayer *, BallData *);//選手とボールの当たり判定
のようなものを考えていたけど、
bool CollisionCheck::isHit(VECTOR,int,int,VECTOR,int,int);//引数:オブジェクト座標、当たり矩形縦、横、オブジェクト座標、当たり矩形縦、横
に変更してみた。1番目の方は選手とボールにしか使えないけど、2番目のようにすれば汎用性が高いのではと考えたのが理由。
ボールをけるボタンを押したときに選手とボールのあたりが真なら、ボールが一定の速度で移動するようにするつもり。
そのときに何回ループしたらボール停止というのではなく、ボールの速度が少しずつ0に近づき、0になったら停止するようにしたいけど、
物理を忘れてしまってるし、当時の記憶がよみがえったとしても問題は解けなかったと思うので、
紙に点と矢印を書いて、どうするか考えてるところ。
234(2): 2011/05/08(日)23:55 ID:45vHEn5A(1/2) AAS
move += f;
x += move;
物理は基本的にこれ
力fで加速(減速)して、現在地xから速度move分だけ動く
>>233ならf=move/2とか、そんな感じで
235(1): 2011/05/08(日)23:58 ID:45vHEn5A(2/2) AAS
すまん訂正、-moveにしないとダメだなw
f=-move/2
-moveを使うと常に移動方向と逆向きに力がかかる
236(2): 2011/05/09(月)00:20 ID:Q5/CRoYG(1) AAS
F=ma
v+=aΔt
x+=vΔt
だろ
237(1): 2011/05/09(月)01:17 ID:SHBGDval(1) AAS
>>236
教科書を丸写しするとそうだな
それをプログラム用に単純化したのが>>234
238(1): 2011/05/09(月)03:49 ID:FkwWv0YK(1/2) AAS
>>231
ボールとの当たり判定をするなら矩形よりも円(球)の方が自然じゃないでしょうか。
プレイヤー側も球体の集合として定義しておき、
ボール中心とプレイヤー判定球の中心間の距離<ボール半径+プレイヤー判定球の半径
となったら、接触していることになります。
プレイヤー判定球に頭、足、手などの属性をつければ、どこに当たっているかも判定できると思います。
上下前次1-新書関写板覧索設栞歴
あと 249 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s