X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 255 (tree) |
|---|---|
| Time | 2020-12-31 11:47:59 |
| Author | |
死亡して倒れる際の腕などのモーションを改善
| @@ -1076,6 +1076,18 @@ | ||
| 1076 | 1076 | //! @return 静止した死体:4 倒れ終わった直後:3 倒れている最中:2 倒れ始める:1 何もしない:0 |
| 1077 | 1077 | int human::CheckAndProcessDead(class Collision *CollD) |
| 1078 | 1078 | { |
| 1079 | + if( hp <= 0 ){ | |
| 1080 | + //腕の角度 | |
| 1081 | + if( armrotation_y < 0.0f ){ | |
| 1082 | + armrotation_y -= DegreeToRadian(6); | |
| 1083 | + if( armrotation_y < DegreeToRadian(-90) ){ armrotation_y = DegreeToRadian(-90); } | |
| 1084 | + } | |
| 1085 | + else{ | |
| 1086 | + armrotation_y += DegreeToRadian(6); | |
| 1087 | + if( armrotation_y > DegreeToRadian(90) ){ armrotation_y = DegreeToRadian(90); } | |
| 1088 | + } | |
| 1089 | + } | |
| 1090 | + | |
| 1079 | 1091 | #ifdef HUMAN_DEADBODY_COLLISION |
| 1080 | 1092 | |
| 1081 | 1093 | //メモ: |
| @@ -1119,14 +1131,6 @@ | ||
| 1119 | 1131 | add_ry = HUMAN_DEADADDRY * -1; |
| 1120 | 1132 | } |
| 1121 | 1133 | |
| 1122 | - //腕の角度 | |
| 1123 | - if( armrotation_y < 0.0f ){ | |
| 1124 | - armrotation_y = DegreeToRadian(-90); | |
| 1125 | - } | |
| 1126 | - else{ | |
| 1127 | - armrotation_y = DegreeToRadian(90); | |
| 1128 | - } | |
| 1129 | - | |
| 1130 | 1134 | //死体が埋まらぬよう、高さを +1.0 する |
| 1131 | 1135 | pos_y += 1.0f; |
| 1132 | 1136 |
| @@ -1319,25 +1323,20 @@ | ||
| 1319 | 1323 | return 2; |
| 1320 | 1324 | } |
| 1321 | 1325 | else if( hp <= 0 ){ //HPが 0 以下になった(死亡した)瞬間なら、倒し始める |
| 1322 | - //体の角度・腕の角度 | |
| 1323 | - switch( GetRand(4) ){ | |
| 1324 | - case 0: | |
| 1325 | - add_ry = HUMAN_DEADADDRY; | |
| 1326 | - armrotation_y = DegreeToRadian(90); | |
| 1327 | - break; | |
| 1328 | - case 1: | |
| 1329 | - add_ry = HUMAN_DEADADDRY * -1; | |
| 1330 | - armrotation_y = DegreeToRadian(90); | |
| 1331 | - break; | |
| 1332 | - case 2: | |
| 1333 | - add_ry = HUMAN_DEADADDRY; | |
| 1334 | - armrotation_y = DegreeToRadian(-90); | |
| 1335 | - break; | |
| 1336 | - case 3: | |
| 1337 | - add_ry = HUMAN_DEADADDRY * -1; | |
| 1338 | - armrotation_y = DegreeToRadian(-90); | |
| 1339 | - break; | |
| 1326 | + float tr; | |
| 1327 | + | |
| 1328 | + //最後に攻撃を受けた方向を計算 | |
| 1329 | + tr = Hit_rx - rotation_x; | |
| 1330 | + for(; tr > (float)M_PI; tr -= (float)M_PI*2){} | |
| 1331 | + for(; tr < (float)M_PI*-1; tr += (float)M_PI*2){} | |
| 1332 | + | |
| 1333 | + //体の角度 | |
| 1334 | + if( ((float)M_PI/2*-1 < tr)&&(tr < (float)M_PI/2) ){ | |
| 1335 | + add_ry = HUMAN_DEADADDRY; | |
| 1340 | 1336 | } |
| 1337 | + else{ | |
| 1338 | + add_ry = HUMAN_DEADADDRY * -1; | |
| 1339 | + } | |
| 1341 | 1340 | |
| 1342 | 1341 | rotation_y += add_ry; |
| 1343 | 1342 |