X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
リビジョン | 343 (tree) |
---|---|
日時 | 2022-12-31 01:10:40 |
作者 | ![]() |
ポイントパラメーターの値変換を関数化、人とマップの当たり判定を改善、コメント修正
@@ -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 ){ |