インベーダーモドキ(borderのソースとヘッダー)。
/*********************************************************************************
*border.h
*********************************************************************************/
//インクルードガード。
#ifndef BORDER_H
//インクルードガード用定数。
#define BORDER_H
//デファイン。
enum HITCHECK_DIRECTION
{
HITCHECK_DIRECTION_X,
HITCHECK_DIRECTION_Y,
};
// オブジェクトとの接触判定を行う。幅と高さ見て、その範囲内に入っていれば当たっているという形にすること。
void CheckHitObject(int move_character_num, int check_direction);
#endif // !BORDER_H
/*********************************************************************************
*border.cpp
*********************************************************************************/
//インクルード。
#include "global.h"
#include "border.h"
//オブジェクトとの接触判定を行う。幅と高さ見て、その範囲内に入っていれば当たっているという形にすること。
void CheckHitObject(int move_character_num,int check_direction) {
//当たってるか総当たりでチェック。
for (int i = 0; i < CHARACTER_MAX; i++) {
switch (characters[i].character_id)
{
case CHARACTER_ID_BORDER:
if (CheckHit(characters[move_character_num], characters[i])) {
if (check_direction == HITCHECK_DIRECTION_X) {
//キャラが左に動いて居た時の処理。
if (characters[move_character_num].vx < 0) { characters[move_character_num].x = characters[i].x + 1; }
//キャラが右に動いて居た時の処理。
if (0 < characters[move_character_num].vx) { characters[move_character_num].x = characters[i].x - 1; }
}
else {
//キャラが上に動いて居た時の処理。
if (characters[move_character_num].vy < 0) { characters[move_character_num].y = characters[i].y + 1; }
//キャラが右に動いて居た時の処理。
if (0 < characters[move_character_num].vy) { characters[move_character_num].y = characters[i].y - 1; }
}
}
break;
}//end of switch
}//end of for
}
この記事が気に入ったらサポートをしてみませんか?