X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 343 (tree) |
|---|---|
| Time | 2022-12-31 01:10:40 |
| Author | |
ポイントパラメーターの値変換を関数化、人とマップの当たり判定を改善、コメント修正
| @@ -232,7 +232,7 @@ | ||
| 232 | 232 | return 0; |
| 233 | 233 | } |
| 234 | 234 | |
| 235 | -//! @brief AABBによる全てのブロックとの当たり判定 | |
| 235 | +//! @brief AABBによるブロックとの当たり判定 | |
| 236 | 236 | //! @param id 判定するブロック番号 |
| 237 | 237 | //! @param min_x 物体の最少 X座標 |
| 238 | 238 | //! @param min_y 物体の最少 Y座標 |
| @@ -247,10 +247,15 @@ | ||
| 247 | 247 | if( BlockDataIF == NULL ){ return false; } |
| 248 | 248 | if( (id < 0)||(BlockDataIF->GetTotaldatas() <= id) ){ return false; } |
| 249 | 249 | |
| 250 | + //板状のブロックは計算外 | |
| 251 | + if( cbdata[id].BoardBlock == true ){ | |
| 252 | + return false; | |
| 253 | + } | |
| 254 | + | |
| 250 | 255 | return CollideBoxAABB(min_x, min_y, min_z, max_x, max_y, max_z, cbdata[id].min_x, cbdata[id].min_y, cbdata[id].min_z, cbdata[id].max_x, cbdata[id].max_y, cbdata[id].max_z); |
| 251 | 256 | } |
| 252 | 257 | |
| 253 | -//! @brief AABBによるブロックとの当たり判定 | |
| 258 | +//! @brief AABBによる全てのブロックとの当たり判定 | |
| 254 | 259 | //! @param min_x 物体の最少 X座標 |
| 255 | 260 | //! @param min_y 物体の最少 Y座標 |
| 256 | 261 | //! @param min_z 物体の最少 Z座標 |
| @@ -323,12 +323,12 @@ | ||
| 323 | 323 | break; |
| 324 | 324 | |
| 325 | 325 | case 17: //時間待ち |
| 326 | - if( WaitSec((unsigned char)data.p2) == false ){ return cnt; } | |
| 326 | + if( WaitSec(PointParamToInt(data.p2)) == false ){ return cnt; } | |
| 327 | 327 | nextp4 = data.p3; |
| 328 | 328 | break; |
| 329 | 329 | |
| 330 | 330 | case 18: //メッセージ |
| 331 | - SetMessage((unsigned char)data.p2, &(Param->MessageID), &(Param->SetMessageID)); | |
| 331 | + SetMessage(PointParamToInt(data.p2), &(Param->MessageID), &(Param->SetMessageID)); | |
| 332 | 332 | nextp4 = data.p3; |
| 333 | 333 | break; |
| 334 | 334 |
| @@ -333,6 +333,14 @@ | ||
| 333 | 333 | return r; |
| 334 | 334 | } |
| 335 | 335 | |
| 336 | +//! @brief ポイントパラメーターの値をunsigned int型に変換 | |
| 337 | +//! @param value 値 | |
| 338 | +//! @return 整数値 | |
| 339 | +unsigned int PointParamToInt(signed short int value) | |
| 340 | +{ | |
| 341 | + return (unsigned int)((unsigned char)value); | |
| 342 | +} | |
| 343 | + | |
| 336 | 344 | //! @brief 2バイトに数値設定(リトルエンディアン) |
| 337 | 345 | //! @param outdata 2バイトのポインタ |
| 338 | 346 | //! @param value 数値 |
| @@ -162,6 +162,7 @@ | ||
| 162 | 162 | |
| 163 | 163 | bool CheckCommandParameter(const char *param, const char *cmd); |
| 164 | 164 | float AngleNormalization(float r); |
| 165 | +unsigned int PointParamToInt(signed short int value); | |
| 165 | 166 | void Set2ByteLittleEndian(unsigned char *outdata, unsigned int value); |
| 166 | 167 | void Set4ByteLittleEndian(unsigned char *outdata, unsigned int value); |
| 167 | 168 | void Set2ByteBigEndian(unsigned char *outdata, unsigned int value); |
| @@ -365,7 +365,7 @@ | ||
| 365 | 365 | { |
| 366 | 366 | //武器番号と弾数を仮登録 |
| 367 | 367 | int WeaponID = data.p2; |
| 368 | - int nbs = (unsigned char)data.p3; | |
| 368 | + int nbs = PointParamToInt(data.p3); | |
| 369 | 369 | |
| 370 | 370 | //ランダムな武器ならば |
| 371 | 371 | if( data.p1 == POINT_P1TYPE_RAND_WEAPON ){ |