トップページ > 過去ログ > 記事閲覧
床との当たり判定
名前:ストン 日時: 2010/06/30 00:04

キャラクターの足元の円と線を使って床との当たり判定を行おうとしたら /*地面との当たり判定 当たり判定を行うBall2Dの配列と要素数を与え、衝突していればTRUEを返す */ bool CollisionLandLines( Ball2D *ballarray, int ballnum ){ bool result = FALSE; for(int i=0; i<g_usedline_num; i++){ for(int j=0; i<ballnum; j++){ //衝突チェック if ( HitTestLineAndBall(g_landlines[i], ballarray[j]) == TRUE ){ result = TRUE; } } } return result; } //地面との当たり判定 BOOL ontheground = FALSE;//着地フラグ //判定円の作成 Ball2D jikifeet[2] = { { {g_jikipos.x - 8, g_jikipos.y + 26} , 8},//円1({}の中は中心の座標) { {g_jikipos.x + 8, g_jikipos.y + 26} , 8}//円2 }; bool hit = CollisionLandLines(jikifeet, 2); if (hit == TRUE){ ontheground = TRUE; g_nowjumping = FALSE; g_jikivector.x = 0; g_jikivector.y = 0; } を加えたところ 1>------ ビルド開始: プロジェクト: chap4, 構成: Debug Win32 ------ 1>コンパイルしています... 1>mymain.cpp 1>リンクしています... 1>マニフェストを埋め込んでいます... 1>ビルドログは "file://c:\Users\mizuta\Documents\Visual Studio 2008\Projects\chap4\Debug\BuildLog.htm" に保存されました。 1>chap4 - エラー 0、警告 0 ========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ========= となりビルドは問題ないのですがデバックすると動かなくなります。 誰かわかる方おしえてください。

Page: 1 |

Re: 床との当たり判定 ( No.1 )
名前:tare 日時:2010/06/30 12:51

動かなくなります、では何が動かないのか分かりません。 状況は詳細に書きましょう
Re: 床との当たり判定 ( No.2 )
名前:ストン 日時:2010/06/30 15:03

すみません説明不足でした。 ●●●は動作を停止しました。 と出て解決策を探そうとします。
Re: 床との当たり判定 ( No.3 )
名前:frost 日時:2010/06/30 17:48

/*地面との当たり判定 当たり判定を行うBall2Dの配列と要素数を与え、衝突していればTRUEを返す */ bool CollisionLandLines( Ball2D *ballarray, int ballnum ){ bool result = FALSE; for(int i=0; i<g_usedline_num; i++){ for(int j=0; i<ballnum; j++){ //衝突チェック if ( HitTestLineAndBall(g_landlines[i], *(ballarray+j)) == TRUE ){ result = TRUE; } } } return result; } //地面との当たり判定 BOOL ontheground = FALSE;//着地フラグ //判定円の作成 Ball2D jikifeet[2] = { { {g_jikipos.x - 8, g_jikipos.y + 26} , 8},//円1({}の中は中心の座標) { {g_jikipos.x + 8, g_jikipos.y + 26} , 8}//円2 }; Ball2D* Pjikifeet; Pjikifeet=&(jikifeet[0]); bool hit = CollisionLandLines(Pjikifeet, 2); if (hit == TRUE){ ontheground = TRUE; g_nowjumping = FALSE; g_jikivector.x = 0; g_jikivector.y = 0; }
Re: 床との当たり判定 ( No.4 )
名前:frost 日時:2010/06/30 17:50

連続投稿すみません。 bool CollisionLandLines( Ball2D *ballarray, int ballnum ){ bool result = FALSE; for(int i=0; i<g_usedline_num; i++){ for(int j=0; j<ballnum //ここはj ; j++){ //衝突チェック if ( HitTestLineAndBall(g_landlines[i], *(ballarray+j)) == TRUE ){ result = TRUE; } } } return result; } //地面との当たり判定 BOOL ontheground = FALSE;//着地フラグ //判定円の作成 Ball2D jikifeet[2] = { { {g_jikipos.x - 8, g_jikipos.y + 26} , 8},//円1({}の中は中心の座標) { {g_jikipos.x + 8, g_jikipos.y + 26} , 8}//円2 }; Ball2D* Pjikifeet; Pjikifeet=&(jikifeet[0]); bool hit = CollisionLandLines(Pjikifeet, 2); if (hit == TRUE){ ontheground = TRUE; g_nowjumping = FALSE; g_jikivector.x = 0; g_jikivector.y = 0; }
Re: 床との当たり判定 ( No.5 )
名前:いっち 日時:2010/06/30 20:51

ストンさん> > を加えたところ なにのどこにどれを加えたのかがわかりません。 (おそらく「14歳・・・教室」に関する質問なのだとは思いますが) なお、提示されているソースの範囲内では、ここが致命的におかしいという部分は見当たりませんでした。 frostさん> レスにパスワードを設定しておけば、レスの右下のスパナのアイコンでレスを修正することが出来ます。 (frostさんのレス(No.4)は(No.3)の修正記事のようです)
Re: 床との当たり判定 ( No.6 )
名前:ストン 日時:2010/07/01 23:11

frostさん このままビルドしたら永久にjの値が増えないので無限ループしますね。 iをjに直したら正常に動作しました。 ご指摘ありがとうございました。 いっちさん すみません、分かりにくかったです。 上のソースを加えたという意味です。 そうです、14歳のやつです。

Page: 1 |