したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

P203までの「main.cpp」

2AF: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(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板