[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
| |
P203までの「main.cpp」
2
:
AF
:2013/05/08(水) 14:54:57
//衝突判定
void Collision(){
//接触確認ループ
for(b2Contact* c = g_world.GetContactList(); c!=NULL;
c = c->GetNext())
{
if(c->IsTouching() == false) continue;
//接触しているボディを取り出す
b2Body* b1 = c->GetFixtureA()->GetBody();
b2Body* b2 = c->GetFixtureB()->GetBody();
//主人公のチェック
b2Body* hb = NULL;
b2Body* ob = NULL;
if(b1 == g_stage.hero) {hb = b1; ob = b2;}
if(b2 == g_stage.hero) {hb = b2; ob = b1;}
if(hb != NULL){
//主人公の足下確認
g_stage.isontheground = true;
}
}
}
//ステージ初期化
void InitStage(){
//ゲームデータ全体のゼロ初期化
ZeroMemory(&g_stage, sizeof(g_stage));
//全ボディ・ジョイント削除
DeleteAllBody();
if(LoadMapData("media\\stage01.txt")==-1){
MessageBox(NULL,"失敗","DXライブラリ",MB_OK);
}
//ボールを追加
//b2Body* ball = CreateDynamicBall(PHS(300), PHS(0), PHS(40));
//g_stage.wall = CreateBox(PHS(320), PHS(400),
// PHS(200), PHS(20), false);
//g_stage.hero = CreateBox(PHS(140), PHS(300),
// PHS(23), PHS(48), true);
//ゲーム開始時刻の記録
g_stage.gamestarttime = g_lasttime;
}
//ゲームクリア画面描画
void GoGameClear(){
g_gamestate = GAME_CLEAR;
g_stage.timerstart = g_lasttime;
}
void DrawGameClear(){
//5秒経ったらタイトル画面へ
if(g_lasttime - g_stage.timerstart > 5000) GoGameTitle();
}
//ゲームオーバー画面描画
void GoGameOver(){
g_gamestate = GAME_OVER;
g_stage.timerstart = g_lasttime;
}
void DrawGameOver(){
//5秒経ったらタイトル画面へ
if(g_lasttime - g_stage.timerstart > 5000) GoGameTitle();
}
b2Body* CreateDynamicBall(float x, float y, float radius){
//ボディ定義
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody; //動的ボディ
bodyDef.position.Set(x, y);
//ボディ作成
b2Body* body = g_world.CreateBody(&bodyDef);
//シェイプ作成
b2CircleShape dynamicBall;
dynamicBall.m_radius = radius;
//フィクスチャ定義
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBall;
fixtureDef.density = 4.0f; //密度
fixtureDef.restitution = 0.7f; //反発力
body->CreateFixture(&fixtureDef);
return body;
}
新着レスの表示
名前:
E-mail
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板