シューティングサンプルプログラムを見たのですが・・・
Posted: 2007年8月26日(日) 01:58
処理を見ていて理解できる部分も多くなったのですが、敵弾と自キャラの当たり判定の実装の仕方が分かりま
せん。敵との当たり判定の応用というか同じような処理だとは思うのですがイマイチ理解できなくて困っています。
一応自分なりに考えて横シューティングの時は以下のようなこういう処理を作ったのですがサンプルでの縦シューティングではどうすればいいのでしょう?特に弾幕を避けるためプレイヤーの当たり判定が極めて小さいなどの処理とか含めて。分かりにくい質問ですがまとめるとサンプルの縦シューティングの敵弾とプレイヤーの当たり判定の実装方法が聞きたいです。
// ------------------------------------------------
// 敵弾幕とプレイヤーの当たり
// ------------------------------------------------
void EbeamShipHit(void)
{
int i;
for ( i=0; i<EBEAM_MAX; i++ )
{
if(gEbeam.flg==ON)// 敵弾幕が存在していれば
{
if (gEbeam.x+EBEAM_XSIZE > gShip.x && // 敵弾幕の右>プレイヤーの左
gEbeam.x < gShip.x+SHIP_XSIZE &&// 敵ビームの左<プレイヤーの右
gEbeam.y+EBEAM_YSIZE > gShip.y && //敵弾幕の 下>プレイヤーの上
gEbeam.y < gShip.y+SHIP_YSIZE ) //敵弾幕の 上<プレイヤーの下
{
gEbeam.flg = OFF; // 敵弾幕が存在しない
gShip.hp--; // プレイヤーのHP減少
gShip.cnt=1; // プレイヤーをダメージ中に
}
}
}
}
せん。敵との当たり判定の応用というか同じような処理だとは思うのですがイマイチ理解できなくて困っています。
一応自分なりに考えて横シューティングの時は以下のようなこういう処理を作ったのですがサンプルでの縦シューティングではどうすればいいのでしょう?特に弾幕を避けるためプレイヤーの当たり判定が極めて小さいなどの処理とか含めて。分かりにくい質問ですがまとめるとサンプルの縦シューティングの敵弾とプレイヤーの当たり判定の実装方法が聞きたいです。
// ------------------------------------------------
// 敵弾幕とプレイヤーの当たり
// ------------------------------------------------
void EbeamShipHit(void)
{
int i;
for ( i=0; i<EBEAM_MAX; i++ )
{
if(gEbeam.flg==ON)// 敵弾幕が存在していれば
{
if (gEbeam.x+EBEAM_XSIZE > gShip.x && // 敵弾幕の右>プレイヤーの左
gEbeam.x < gShip.x+SHIP_XSIZE &&// 敵ビームの左<プレイヤーの右
gEbeam.y+EBEAM_YSIZE > gShip.y && //敵弾幕の 下>プレイヤーの上
gEbeam.y < gShip.y+SHIP_YSIZE ) //敵弾幕の 上<プレイヤーの下
{
gEbeam.flg = OFF; // 敵弾幕が存在しない
gShip.hp--; // プレイヤーのHP減少
gShip.cnt=1; // プレイヤーをダメージ中に
}
}
}
}