• R/O
  • SSH
  • HTTPS

Commit

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。


Commit MetaInfo

Revision190 (tree)
Zeit2017-11-18 14:35:10
Autorxops-mikan

Log Message

小物の位置修正フラグ有効時の計算を改善、人に被弾した銃弾の攻撃力減衰量を調整

Ändern Zusammenfassung

Diff

--- trunk/collision.cpp (revision 189)
+++ trunk/collision.cpp (revision 190)
@@ -100,7 +100,7 @@
100100 r = sqrt(x*x + y*y + z*z);
101101
102102 //大きくする
103- r += 0.1f;
103+ r += COLLISION_ADDSIZE;
104104
105105 //座標を再計算
106106 cbdata[i].x[j] = cx + cos(rx) * cos(ry) * r;
@@ -210,12 +210,12 @@
210210 }
211211
212212 //計算誤差対策のため、わずかに大きめにする。
213- *min_x -= 0.1f;
214- *min_y -= 0.1f;
215- *min_z -= 0.1f;
216- *max_x += 0.1f;
217- *max_y += 0.1f;
218- *max_z += 0.1f;
213+ *min_x -= COLLISION_ADDSIZE;
214+ *min_y -= COLLISION_ADDSIZE;
215+ *min_z -= COLLISION_ADDSIZE;
216+ *max_x += COLLISION_ADDSIZE;
217+ *max_y += COLLISION_ADDSIZE;
218+ *max_z += COLLISION_ADDSIZE;
219219 }
220220
221221 //! @brief 空間分割のグループを算出
@@ -538,12 +538,12 @@
538538 if( rmax_z < RayPos_z ){ rmax_z = RayPos_z; }
539539
540540 //計算誤差対策のため、わずかに大きめにする。
541- rmin_x -= 0.1f;
542- rmin_y -= 0.1f;
543- rmin_z -= 0.1f;
544- rmax_x += 0.1f;
545- rmax_y += 0.1f;
546- rmax_z += 0.1f;
541+ rmin_x -= COLLISION_ADDSIZE;
542+ rmin_y -= COLLISION_ADDSIZE;
543+ rmin_z -= COLLISION_ADDSIZE;
544+ rmax_x += COLLISION_ADDSIZE;
545+ rmax_y += COLLISION_ADDSIZE;
546+ rmax_z += COLLISION_ADDSIZE;
547547 }
548548
549549 if( maxDist > 0.0f ){
@@ -656,12 +656,12 @@
656656 if( rmax_z < RayPos_z ){ rmax_z = RayPos_z; }
657657
658658 //計算誤差対策のため、わずかに大きめにする。
659- rmin_x -= 0.1f;
660- rmin_y -= 0.1f;
661- rmin_z -= 0.1f;
662- rmax_x += 0.1f;
663- rmax_y += 0.1f;
664- rmax_z += 0.1f;
659+ rmin_x -= COLLISION_ADDSIZE;
660+ rmin_y -= COLLISION_ADDSIZE;
661+ rmin_z -= COLLISION_ADDSIZE;
662+ rmax_x += COLLISION_ADDSIZE;
663+ rmax_y += COLLISION_ADDSIZE;
664+ rmax_z += COLLISION_ADDSIZE;
665665 }
666666
667667 if( maxDist > 0.0f ){
@@ -976,12 +976,12 @@
976976 if( pmax_z < RayPos_z ){ pmax_z = RayPos_z; }
977977
978978 //計算誤差対策のため、わずかに大きめにする。
979- pmin_x -= 0.1f;
980- pmin_y -= 0.1f;
981- pmin_z -= 0.1f;
982- pmax_x += 0.1f;
983- pmax_y += 0.1f;
984- pmax_z += 0.1f;
979+ pmin_x -= COLLISION_ADDSIZE;
980+ pmin_y -= COLLISION_ADDSIZE;
981+ pmin_z -= COLLISION_ADDSIZE;
982+ pmax_x += COLLISION_ADDSIZE;
983+ pmax_y += COLLISION_ADDSIZE;
984+ pmax_z += COLLISION_ADDSIZE;
985985
986986 //境界ボックス同士で判定
987987 if( CollideBoxAABB(s_x - s_r, s_y - s_r, s_z - s_r, s_x + s_r, s_y + s_r, s_z + s_r, pmin_x, pmin_y, pmin_z, pmax_x, pmax_y, pmax_z) == false ){
@@ -1071,12 +1071,12 @@
10711071 if( pmax_z < RayPos_z ){ pmax_z = RayPos_z; }
10721072
10731073 //計算誤差対策のため、わずかに大きめにする。
1074- pmin_x -= 0.1f;
1075- pmin_y -= 0.1f;
1076- pmin_z -= 0.1f;
1077- pmax_x += 0.1f;
1078- pmax_y += 0.1f;
1079- pmax_z += 0.1f;
1074+ pmin_x -= COLLISION_ADDSIZE;
1075+ pmin_y -= COLLISION_ADDSIZE;
1076+ pmin_z -= COLLISION_ADDSIZE;
1077+ pmax_x += COLLISION_ADDSIZE;
1078+ pmax_y += COLLISION_ADDSIZE;
1079+ pmax_z += COLLISION_ADDSIZE;
10801080
10811081 //境界ボックス同士で判定
10821082 if( CollideBoxAABB(box_min_x, box_min_y, box_min_z, box_max_x, box_max_y, box_max_z, pmin_x, pmin_y, pmin_z, pmax_x, pmax_y, pmax_z) == false ){
--- trunk/collision.h (revision 189)
+++ trunk/collision.h (revision 190)
@@ -32,6 +32,8 @@
3232 #ifndef COLLISION_H
3333 #define COLLISION_H
3434
35+#define COLLISION_ADDSIZE 0.1f //!< 当たり判定範囲の加算量
36+
3537 #ifndef H_LAYERLEVEL
3638 #define H_LAYERLEVEL 2 //!< Select include file.
3739 #endif
--- trunk/object.cpp (revision 189)
+++ trunk/object.cpp (revision 190)
@@ -2204,6 +2204,7 @@
22042204 //! @brief ブロックの上に移動
22052205 //! @param CollD Collisionのポインタ
22062206 //! @return 元の座標からの移動量(0で移動なし)
2207+//! @attention ブロックに埋まっている場合でも、下のブロックまで すり抜けます。
22072208 float smallobject::CollisionMap(class Collision *CollD)
22082209 {
22092210 //クラスが設定されていなければ失敗
@@ -2212,11 +2213,8 @@
22122213 float Dist;
22132214 SmallObjectParameter ParamData;
22142215
2215- //ブロックに埋まっていれば、そのまま
2216- if( CollD->CheckALLBlockInside(pos_x, pos_y, pos_z) == true ){ return 0.0f; }
2217-
22182216 //下方向に当たり判定
2219- if( CollD->CheckALLBlockIntersectRay(pos_x, pos_y, pos_z, 0, -1, 0, NULL, NULL, &Dist, 1000.0f) == true ){
2217+ if( CollD->CheckALLBlockIntersectRay(pos_x, pos_y + COLLISION_ADDSIZE, pos_z, 0, -1, 0, NULL, NULL, &Dist, 1000.0f) == true ){
22202218 //当たり判定の大きさを取得
22212219 if( id_parameter == TOTAL_PARAMETERINFO_SMALLOBJECT+1 -1 ){
22222220 Dist -= (float)MIFdata->GetAddSmallobjectDecide()/10.0f;
--- trunk/objectmanager.cpp (revision 189)
+++ trunk/objectmanager.cpp (revision 190)
@@ -823,7 +823,7 @@
823823 BulletObj_HumanIndex[objectID].SetIndexFlag(HumanHead_id);
824824
825825 //攻撃力と貫通力を計算
826- attacks = (int)((float)attacks * 0.6f);
826+ attacks = (int)((float)attacks * 0.5f);
827827 penetration -= 1;
828828
829829 CheckDist = HumanHead_Dist + 1.0f;