X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 148 (tree) |
|---|---|
| Time | 2016-09-04 20:40:49 |
| Author | |
3Dにおけるデバック用中心線の色を変更、ソースコード内の誤字を修正。
| @@ -304,7 +304,7 @@ | ||
| 304 | 304 | vx = cos(rx*-1 + (float)M_PI/2); |
| 305 | 305 | vz = sin(rx*-1 + (float)M_PI/2); |
| 306 | 306 | if( |
| 307 | - (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGTH, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 307 | + (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGHT, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 308 | 308 | (CollD->CheckALLBlockIntersectDummyRay(posx, posy - 1.0f, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == false) //足元にブロックがない(落ちる) |
| 309 | 309 | ){ |
| 310 | 310 | //前進フラグを削除し、後退フラグを設定 |
| @@ -316,7 +316,7 @@ | ||
| 316 | 316 | vx = cos(rx*-1 + (float)M_PI/2 + (float)M_PI); |
| 317 | 317 | vz = sin(rx*-1 + (float)M_PI/2 + (float)M_PI); |
| 318 | 318 | if( |
| 319 | - (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGTH, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 319 | + (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGHT, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 320 | 320 | (CollD->CheckALLBlockIntersectDummyRay(posx, posy - 1.0f, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == false) //足元にブロックがない(落ちる) |
| 321 | 321 | ){ |
| 322 | 322 | //後退フラグを削除し、前進フラグを設定 |
| @@ -329,7 +329,7 @@ | ||
| 329 | 329 | vx = cos(rx*-1); |
| 330 | 330 | vz = sin(rx*-1); |
| 331 | 331 | if( |
| 332 | - (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGTH, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 332 | + (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGHT, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 333 | 333 | (CollD->CheckALLBlockIntersectDummyRay(posx, posy - 1.0f, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == false) //足元にブロックがない(落ちる) |
| 334 | 334 | ){ |
| 335 | 335 | //右移動フラグを削除し、左移動フラグを設定 |
| @@ -340,7 +340,7 @@ | ||
| 340 | 340 | vx = cos(rx*-1 + (float)M_PI); |
| 341 | 341 | vz = sin(rx*-1 + (float)M_PI); |
| 342 | 342 | if( |
| 343 | - (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGTH, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 343 | + (CollD->CheckALLBlockIntersectDummyRay(posx, posy + HUMAN_MAPCOLLISION_HEIGHT, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == true)|| //腰の高さにブロックがある(ぶつかる) | |
| 344 | 344 | (CollD->CheckALLBlockIntersectDummyRay(posx, posy - 1.0f, posz, vx, 0, vz, NULL, NULL, &Dist, HUMAN_MAPCOLLISION_R) == false) //足元にブロックがない(落ちる) |
| 345 | 345 | ){ |
| 346 | 346 | //左移動フラグを削除し、右移動フラグを設定 |
| @@ -475,7 +475,7 @@ | ||
| 475 | 475 | |
| 476 | 476 | //腰付近のあたり判定 |
| 477 | 477 | new_posx = posx + cos(rx*-1 + (float)M_PI/2) * (AI_CHECKJUMP_DIST + HUMAN_MAPCOLLISION_R); |
| 478 | - new_posy = posy + HUMAN_MAPCOLLISION_HEIGTH; | |
| 478 | + new_posy = posy + HUMAN_MAPCOLLISION_HEIGHT; | |
| 479 | 479 | new_posz = posz + sin(rx*-1 + (float)M_PI/2) * (AI_CHECKJUMP_DIST + HUMAN_MAPCOLLISION_R); |
| 480 | 480 | if( CollD->CheckALLBlockInside(new_posx, new_posy, new_posz) == true ){ |
| 481 | 481 | ObjMgr->MoveJump(ctrlid); |
| @@ -490,7 +490,7 @@ | ||
| 490 | 490 | ObjMgr->MoveJump(ctrlid); |
| 491 | 491 | return true; |
| 492 | 492 | } |
| 493 | - else if( CollD->CheckALLBlockIntersectRay(new_posx, new_posy, new_posz, 0.0f, 1.0f, 0.0f, NULL, NULL, &dist_dummy, HUMAN_HEIGTH - AI_CHECKJUMP_HEIGHT) == true ){ | |
| 493 | + else if( CollD->CheckALLBlockIntersectRay(new_posx, new_posy, new_posz, 0.0f, 1.0f, 0.0f, NULL, NULL, &dist_dummy, HUMAN_HEIGHT - AI_CHECKJUMP_HEIGHT) == true ){ | |
| 494 | 494 | ObjMgr->MoveJump(ctrlid); |
| 495 | 495 | return true; |
| 496 | 496 | } |
| @@ -1245,9 +1245,9 @@ | ||
| 1245 | 1245 | void D3DGraphics::Centerline() |
| 1246 | 1246 | { |
| 1247 | 1247 | ResetWorldTransform(); |
| 1248 | - Drawline(100.0f, 0.0f, 0.0f, -100.0f, 0.0f, 0.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); | |
| 1248 | + Drawline(100.0f, 0.0f, 0.0f, -100.0f, 0.0f, 0.0f, GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1249 | 1249 | Drawline(0.0f, 100.0f, 0.0f, 0.0f, -100.0f, 0.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); |
| 1250 | - Drawline(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -100.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); | |
| 1250 | + Drawline(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -100.0f, GetColorCode(0.0f,0.0f,1.0f,1.0f)); | |
| 1251 | 1251 | } |
| 1252 | 1252 | |
| 1253 | 1253 | //! @brief 【デバック用】線描画 |
| @@ -1855,9 +1855,9 @@ | ||
| 1855 | 1855 | void D3DGraphics::Centerline() |
| 1856 | 1856 | { |
| 1857 | 1857 | ResetWorldTransform(); |
| 1858 | - Drawline(100.0f, 0.0f, 0.0f, -100.0f, 0.0f, 0.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); | |
| 1858 | + Drawline(100.0f, 0.0f, 0.0f, -100.0f, 0.0f, 0.0f, GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1859 | 1859 | Drawline(0.0f, 100.0f, 0.0f, 0.0f, -100.0f, 0.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); |
| 1860 | - Drawline(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -100.0f, GetColorCode(0.0f,1.0f,0.0f,1.0f)); | |
| 1860 | + Drawline(0.0f, 0.0f, 100.0f, 0.0f, 0.0f, -100.0f, GetColorCode(0.0f,0.0f,1.0f,1.0f)); | |
| 1861 | 1861 | } |
| 1862 | 1862 | |
| 1863 | 1863 | //! @brief 【デバック用】線描画 |
| @@ -1824,7 +1824,7 @@ | ||
| 1824 | 1824 | float crx = camera_rx*0.6f + (view_rx + mouse_rx*-1 + (float)M_PI/2)*0.4f; // 3/5 + 2/5 |
| 1825 | 1825 | float cry = camera_ry*0.6f + (view_ry + mouse_ry)*0.4f; // 3/5 + 2/5 |
| 1826 | 1826 | float dist; |
| 1827 | - if( CollD.CheckALLBlockIntersectRay(x, y + HUMAN_HEIGTH, z, cos(crx)*cos(cry)*-1, sin(cry*-1), sin(crx)*cos(cry)*-1, NULL, NULL, &dist, 13.0f) == true ){ | |
| 1827 | + if( CollD.CheckALLBlockIntersectRay(x, y + HUMAN_HEIGHT, z, cos(crx)*cos(cry)*-1, sin(cry*-1), sin(crx)*cos(cry)*-1, NULL, NULL, &dist, 13.0f) == true ){ | |
| 1828 | 1828 | dist -= 1.0f; |
| 1829 | 1829 | } |
| 1830 | 1830 | else{ |
| @@ -1831,7 +1831,7 @@ | ||
| 1831 | 1831 | dist = 13.0f; |
| 1832 | 1832 | } |
| 1833 | 1833 | camera_x = x - cos(crx)*cos(cry)*dist; |
| 1834 | - camera_y = y + HUMAN_HEIGTH + sin(cry*-1)*dist; | |
| 1834 | + camera_y = y + HUMAN_HEIGHT + sin(cry*-1)*dist; | |
| 1835 | 1835 | camera_z = z - sin(crx)*cos(cry)*dist; |
| 1836 | 1836 | camera_rx = crx; |
| 1837 | 1837 | camera_ry = cry; |
| @@ -1985,14 +1985,14 @@ | ||
| 1985 | 1985 | d3dg->Drawline(posx+3.0f, posy, posz-3.0f, posx-3.0f, posy, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); |
| 1986 | 1986 | d3dg->Drawline(posx-3.0f, posy, posz-3.0f, posx-3.0f, posy, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); |
| 1987 | 1987 | d3dg->Drawline(posx-3.0f, posy, posz+3.0f, posx+3.0f, posy, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); |
| 1988 | - d3dg->Drawline(posx+3.0f, posy+HUMAN_HEIGTH, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGTH, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1989 | - d3dg->Drawline(posx+3.0f, posy+HUMAN_HEIGTH, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGTH, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1990 | - d3dg->Drawline(posx-3.0f, posy+HUMAN_HEIGTH, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGTH, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1991 | - d3dg->Drawline(posx-3.0f, posy+HUMAN_HEIGTH, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGTH, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1992 | - d3dg->Drawline(posx+3.0f, posy, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGTH, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1993 | - d3dg->Drawline(posx+3.0f, posy, posz-3.0f, posx+3.0f, posy+HUMAN_HEIGTH, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1994 | - d3dg->Drawline(posx-3.0f, posy, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGTH, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1995 | - d3dg->Drawline(posx-3.0f, posy, posz+3.0f, posx-3.0f, posy+HUMAN_HEIGTH, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1988 | + d3dg->Drawline(posx+3.0f, posy+HUMAN_HEIGHT, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGHT, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1989 | + d3dg->Drawline(posx+3.0f, posy+HUMAN_HEIGHT, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGHT, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1990 | + d3dg->Drawline(posx-3.0f, posy+HUMAN_HEIGHT, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGHT, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1991 | + d3dg->Drawline(posx-3.0f, posy+HUMAN_HEIGHT, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGHT, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1992 | + d3dg->Drawline(posx+3.0f, posy, posz+3.0f, posx+3.0f, posy+HUMAN_HEIGHT, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1993 | + d3dg->Drawline(posx+3.0f, posy, posz-3.0f, posx+3.0f, posy+HUMAN_HEIGHT, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1994 | + d3dg->Drawline(posx-3.0f, posy, posz-3.0f, posx-3.0f, posy+HUMAN_HEIGHT, posz-3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1995 | + d3dg->Drawline(posx-3.0f, posy, posz+3.0f, posx-3.0f, posy+HUMAN_HEIGHT, posz+3.0f, d3dg->GetColorCode(1.0f,0.0f,0.0f,1.0f)); | |
| 1996 | 1996 | } |
| 1997 | 1997 | } |
| 1998 | 1998 | } |
| @@ -992,9 +992,9 @@ | ||
| 992 | 992 | SetDisableScope(); |
| 993 | 993 | |
| 994 | 994 | //次のフレームの頭の座標を取得 |
| 995 | - check_posx = pos_x + cos(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGTH; | |
| 996 | - check_posy = pos_y + cos(add_ry) * HUMAN_HEIGTH; | |
| 997 | - check_posz = pos_z + sin(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGTH; | |
| 995 | + check_posx = pos_x + cos(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGHT; | |
| 996 | + check_posy = pos_y + cos(add_ry) * HUMAN_HEIGHT; | |
| 997 | + check_posz = pos_z + sin(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGHT; | |
| 998 | 998 | |
| 999 | 999 | if( CollD->CheckALLBlockInside(check_posx, check_posy, check_posz) == true ){ |
| 1000 | 1000 | deadstate = 2; |
| @@ -1036,9 +1036,9 @@ | ||
| 1036 | 1036 | } |
| 1037 | 1037 | else{ |
| 1038 | 1038 | //次のフレームの頭の座標を取得 |
| 1039 | - check_posx = pos_x + cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1040 | - check_posy = pos_y + cos(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1041 | - check_posz = pos_z + sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1039 | + check_posx = pos_x + cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1040 | + check_posy = pos_y + cos(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1041 | + check_posz = pos_z + sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1042 | 1042 | |
| 1043 | 1043 | if( CollD->CheckALLBlockInside(check_posx, check_posy, check_posz) == true ){ |
| 1044 | 1044 | deadstate = 3; |
| @@ -1090,9 +1090,9 @@ | ||
| 1090 | 1090 | } |
| 1091 | 1091 | |
| 1092 | 1092 | //次のフレームの足の座標を取得 |
| 1093 | - check_posx = pos_x - cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1093 | + check_posx = pos_x - cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1094 | 1094 | check_posy = pos_y + 0.1f; |
| 1095 | - check_posz = pos_z - sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1095 | + check_posz = pos_z - sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1096 | 1096 | |
| 1097 | 1097 | if( CollD->CheckALLBlockInside(check_posx, check_posy, check_posz) == true ){ |
| 1098 | 1098 | deadstate = 4; |
| @@ -1100,9 +1100,9 @@ | ||
| 1100 | 1100 | } |
| 1101 | 1101 | |
| 1102 | 1102 | //次のフレームの頭の座標を取得 |
| 1103 | - check_posx = pos_x - cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1104 | - check_posy = pos_y + cos(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1105 | - check_posz = pos_z - sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGTH; | |
| 1103 | + check_posx = pos_x - cos(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1104 | + check_posy = pos_y + cos(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1105 | + check_posz = pos_z - sin(rotation_x*-1 - (float)M_PI/2) * sin(rotation_y + add_ry) * HUMAN_HEIGHT; | |
| 1106 | 1106 | |
| 1107 | 1107 | if( CollD->CheckALLBlockInside(check_posx, check_posy, check_posz) == true ){ |
| 1108 | 1108 | deadstate = 4; |
| @@ -1110,8 +1110,8 @@ | ||
| 1110 | 1110 | } |
| 1111 | 1111 | |
| 1112 | 1112 | //足の座標を移動 |
| 1113 | - pos_x -= cos(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGTH; | |
| 1114 | - pos_z -= sin(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGTH; | |
| 1113 | + pos_x -= cos(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGHT; | |
| 1114 | + pos_z -= sin(rotation_x*-1 - (float)M_PI/2) * sin(add_ry) * HUMAN_HEIGHT; | |
| 1115 | 1115 | |
| 1116 | 1116 | rotation_y += add_ry; |
| 1117 | 1117 | return 2; |
| @@ -1303,8 +1303,8 @@ | ||
| 1303 | 1303 | |
| 1304 | 1304 | if( move_y > 0.0f ){ |
| 1305 | 1305 | //上方向へ当たり判定 |
| 1306 | - if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_HEIGTH, pos_z, 0, 1, 0, NULL, NULL, &Dist, move_y) == true ){ | |
| 1307 | - CollD->CheckALLBlockIntersectRay(pos_x, pos_y + HUMAN_HEIGTH, pos_z, 0, 1, 0, NULL, NULL, &Dist, move_y); | |
| 1306 | + if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_HEIGHT, pos_z, 0, 1, 0, NULL, NULL, &Dist, move_y) == true ){ | |
| 1307 | + CollD->CheckALLBlockIntersectRay(pos_x, pos_y + HUMAN_HEIGHT, pos_z, 0, 1, 0, NULL, NULL, &Dist, move_y); | |
| 1308 | 1308 | |
| 1309 | 1309 | FallDistance = Dist; |
| 1310 | 1310 | move_y = 0.0f; |
| @@ -1391,24 +1391,24 @@ | ||
| 1391 | 1391 | |
| 1392 | 1392 | //腰付近をAABBで荒削り |
| 1393 | 1393 | if( CollideBoxAABB(min_x, min_y, min_z, max_x, max_y, max_z, |
| 1394 | - pos_x - HUMAN_MAPCOLLISION_R - 1.0f, pos_y + HUMAN_MAPCOLLISION_HEIGTH - 1.0f, pos_z - HUMAN_MAPCOLLISION_R - 1.0f, pos_x + HUMAN_MAPCOLLISION_R + 1.0f, pos_y + HUMAN_MAPCOLLISION_HEIGTH + 1.0f, pos_z + HUMAN_MAPCOLLISION_R + 1.0f) == true | |
| 1394 | + pos_x - HUMAN_MAPCOLLISION_R - 1.0f, pos_y + HUMAN_MAPCOLLISION_HEIGHT - 1.0f, pos_z - HUMAN_MAPCOLLISION_R - 1.0f, pos_x + HUMAN_MAPCOLLISION_R + 1.0f, pos_y + HUMAN_MAPCOLLISION_HEIGHT + 1.0f, pos_z + HUMAN_MAPCOLLISION_R + 1.0f) == true | |
| 1395 | 1395 | ){ |
| 1396 | 1396 | surface = -1; |
| 1397 | - CollD->CheckBlockInside(i, pos_x, pos_y + HUMAN_MAPCOLLISION_HEIGTH, pos_z, false, &surface); | |
| 1397 | + CollD->CheckBlockInside(i, pos_x, pos_y + HUMAN_MAPCOLLISION_HEIGHT, pos_z, false, &surface); | |
| 1398 | 1398 | |
| 1399 | 1399 | if( surface != -1 ){ |
| 1400 | 1400 | //HUMAN_MAPCOLLISION_R 分の先を調べる |
| 1401 | - if( CollD->CheckBlockInside(i, pos_x + cos(ang)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGTH, pos_z + sin(ang)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1401 | + if( CollD->CheckBlockInside(i, pos_x + cos(ang)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGHT, pos_z + sin(ang)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1402 | 1402 | CollD->ScratchVector(i, surface, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1403 | 1403 | } |
| 1404 | 1404 | |
| 1405 | 1405 | //左右90度づつを調べる |
| 1406 | - if( CollD->CheckBlockInside(i, pos_x + cos(ang + (float)M_PI/2)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGTH, pos_z + sin(ang + (float)M_PI/2)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1406 | + if( CollD->CheckBlockInside(i, pos_x + cos(ang + (float)M_PI/2)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGHT, pos_z + sin(ang + (float)M_PI/2)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1407 | 1407 | if( CollD->CheckPolygonFrontRx(i, surface, ang) == true ){ //進行方向に対して表向きなら〜 |
| 1408 | 1408 | CollD->ScratchVector(i, surface, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1409 | 1409 | } |
| 1410 | 1410 | } |
| 1411 | - if( CollD->CheckBlockInside(i, pos_x + cos(ang - (float)M_PI/2)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGTH, pos_z + sin(ang - (float)M_PI/2)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1411 | + if( CollD->CheckBlockInside(i, pos_x + cos(ang - (float)M_PI/2)*HUMAN_MAPCOLLISION_R, pos_y + HUMAN_MAPCOLLISION_HEIGHT, pos_z + sin(ang - (float)M_PI/2)*HUMAN_MAPCOLLISION_R, true, NULL) == true ){ | |
| 1412 | 1412 | if( CollD->CheckPolygonFrontRx(i, surface, ang) == true ){ //進行方向に対して表向きなら〜 |
| 1413 | 1413 | CollD->ScratchVector(i, surface, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1414 | 1414 | } |
| @@ -1427,21 +1427,21 @@ | ||
| 1427 | 1427 | } |
| 1428 | 1428 | |
| 1429 | 1429 | //頭を当たり判定 |
| 1430 | - if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_HEIGTH, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1431 | - CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_HEIGTH, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1430 | + if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_HEIGHT, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1431 | + CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_HEIGHT, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1432 | 1432 | CollD->ScratchVector(id, face, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1433 | 1433 | } |
| 1434 | 1434 | |
| 1435 | 1435 | if( AddCollisionFlag == true ){ |
| 1436 | 1436 | //腰付近の追加当たり判定 |
| 1437 | - if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_MAPCOLLISION_ADD_HEIGTH_A, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1438 | - CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_MAPCOLLISION_ADD_HEIGTH_A, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1437 | + if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_MAPCOLLISION_ADD_HEIGHT_A, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1438 | + CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_MAPCOLLISION_ADD_HEIGHT_A, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1439 | 1439 | CollD->ScratchVector(id, face, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1440 | 1440 | } |
| 1441 | 1441 | |
| 1442 | 1442 | //腰付近の追加当たり判定 |
| 1443 | - if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_MAPCOLLISION_ADD_HEIGTH_B, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1444 | - CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_MAPCOLLISION_ADD_HEIGTH_B, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1443 | + if( CollD->CheckALLBlockIntersectDummyRay(pos_x, pos_y + HUMAN_MAPCOLLISION_ADD_HEIGHT_B, pos_z, vx, 0, vz, NULL, NULL, &Dist, speed) == true ){ | |
| 1444 | + CollD->CheckALLBlockIntersectRay(pos_x, pos_y + FallDistance + HUMAN_MAPCOLLISION_ADD_HEIGHT_B, pos_z, vx, 0, vz, &id, &face, &Dist, speed); | |
| 1445 | 1445 | CollD->ScratchVector(id, face, move_x2, vy, move_z2, &move_x2, &vy, &move_z2); |
| 1446 | 1446 | } |
| 1447 | 1447 | } |
| @@ -1486,9 +1486,9 @@ | ||
| 1486 | 1486 | newpos_z = pos_z + move_z2; |
| 1487 | 1487 | |
| 1488 | 1488 | //移動先の高さを調べる |
| 1489 | - if( CollD->CheckALLBlockInside(newpos_x, newpos_y + HUMAN_HEIGTH, newpos_z) == false ){ | |
| 1490 | - if( CollD->CheckALLBlockIntersectRay(newpos_x, newpos_y + HUMAN_HEIGTH, newpos_z, 0, -1, 0, NULL, NULL, &Dist, HUMAN_HEIGTH) == true ){ | |
| 1491 | - float height = HUMAN_HEIGTH - Dist; | |
| 1489 | + if( CollD->CheckALLBlockInside(newpos_x, newpos_y + HUMAN_HEIGHT, newpos_z) == false ){ | |
| 1490 | + if( CollD->CheckALLBlockIntersectRay(newpos_x, newpos_y + HUMAN_HEIGHT, newpos_z, 0, -1, 0, NULL, NULL, &Dist, HUMAN_HEIGHT) == true ){ | |
| 1491 | + float height = HUMAN_HEIGHT - Dist; | |
| 1492 | 1492 | |
| 1493 | 1493 | //人を上に持ち上げる |
| 1494 | 1494 | if( height > 0.9f ){ |
| @@ -1515,7 +1515,7 @@ | ||
| 1515 | 1515 | //全身を改めて確認 |
| 1516 | 1516 | if( |
| 1517 | 1517 | (CollD->CheckALLBlockInside(newpos_x, newpos_y + offset, newpos_z) == true)|| |
| 1518 | - (CollD->CheckALLBlockIntersectRay(newpos_x, newpos_y + offset, newpos_z, 0, 1, 0, NULL, NULL, &Dist, HUMAN_HEIGTH - offset - 1.0f) == true) | |
| 1518 | + (CollD->CheckALLBlockIntersectRay(newpos_x, newpos_y + offset, newpos_z, 0, 1, 0, NULL, NULL, &Dist, HUMAN_HEIGHT - offset - 1.0f) == true) | |
| 1519 | 1519 | ){ |
| 1520 | 1520 | //めり込むなら移動しない |
| 1521 | 1521 | move_x2 = 0.0f; |
| @@ -45,7 +45,7 @@ | ||
| 45 | 45 | |
| 46 | 46 | #define HUMAN_JUMP_SPEED (2.2f + (HUMAN_DAMAGE_SPEED)) //!< ジャンプする速度 |
| 47 | 47 | |
| 48 | -#define HUMAN_HEIGTH 20.0f //!< 人の高さ | |
| 48 | +#define HUMAN_HEIGHT 20.0f //!< 人の高さ | |
| 49 | 49 | #define HUMAN_DAMAGE_HEAD 2.0f //!< 弾が 頭 に当たった場合のダメージ倍率 |
| 50 | 50 | #define HUMAN_DAMAGE_UP 1.0f //!< 弾が 上半身 に当たった場合のダメージ倍率 |
| 51 | 51 | #define HUMAN_DAMAGE_LEG 0.7f //!< 弾が 下半身 に当たった場合のダメージ倍率 |
| @@ -66,9 +66,9 @@ | ||
| 66 | 66 | #define ARMRAD_RELOADWEAPON DegreeToRadian(-20) //!< リロード時の腕の表示角度 |
| 67 | 67 | |
| 68 | 68 | #define HUMAN_MAPCOLLISION_R 5.0f //!< 人とマップの当たり判定 半径 |
| 69 | -#define HUMAN_MAPCOLLISION_HEIGTH 10.2f //!< 人とマップの当たり判定 高さ(注:腰程度) | |
| 70 | -#define HUMAN_MAPCOLLISION_ADD_HEIGTH_A 9.2f //!< 人とマップの当たり判定 追加分 高さ(注:標準マップ SCHOOL に合わせる) | |
| 71 | -#define HUMAN_MAPCOLLISION_ADD_HEIGTH_B 13.2f //!< 人とマップの当たり判定 追加分 高さ(注:標準マップ SCHOOL に合わせる) | |
| 69 | +#define HUMAN_MAPCOLLISION_HEIGHT 10.2f //!< 人とマップの当たり判定 高さ(注:腰程度) | |
| 70 | +#define HUMAN_MAPCOLLISION_ADD_HEIGHT_A 9.2f //!< 人とマップの当たり判定 追加分 高さ(注:標準マップ SCHOOL に合わせる) | |
| 71 | +#define HUMAN_MAPCOLLISION_ADD_HEIGHT_B 13.2f //!< 人とマップの当たり判定 追加分 高さ(注:標準マップ SCHOOL に合わせる) | |
| 72 | 72 | #define HUMAN_MAPCOLLISION_SLOPEANGLE DegreeToRadian(50) //!< 人とマップの当たり判定 登れない斜面の角度 |
| 73 | 73 | #define HUMAN_MAPCOLLISION_SLOPEFORCEANGLE DegreeToRadian(22.62f) //!< 人とマップの当たり判定 登れない斜面が人を押し出す角度 |
| 74 | 74 | #define HUMAN_DEADLINE -100.0f //!< 人が死亡するY座標(デッドライン) |
| @@ -592,7 +592,7 @@ | ||
| 592 | 592 | in_humanB->GetPosData(&h2_x, &h2_y, &h2_z, NULL); |
| 593 | 593 | |
| 594 | 594 | //円柱の当たり判定 |
| 595 | - if( CollideCylinder(h1_x, h1_y, h1_z, 3.0f, HUMAN_HEIGTH-0.5f, h2_x, h2_y, h2_z, 3.0f, HUMAN_HEIGTH-0.5f, &angle, &length) == true ){ | |
| 595 | + if( CollideCylinder(h1_x, h1_y, h1_z, 3.0f, HUMAN_HEIGHT-0.5f, h2_x, h2_y, h2_z, 3.0f, HUMAN_HEIGHT-0.5f, &angle, &length) == true ){ | |
| 596 | 596 | //めり込んだ分だけ押し出す |
| 597 | 597 | in_humanA->AddPosOrder(angle, 0.0f, length/2); |
| 598 | 598 | in_humanB->AddPosOrder(angle + (float)M_PI, 0.0f, length/2); |
| @@ -1017,7 +1017,7 @@ | ||
| 1017 | 1017 | r = sqrt(x*x + y*y + z*z); |
| 1018 | 1018 | |
| 1019 | 1019 | //100.0より遠ければ計算しない |
| 1020 | - if( r > MAX_DAMAGE_GRENADE_DISTANCE + HUMAN_HEIGTH ){ continue; } | |
| 1020 | + if( r > MAX_DAMAGE_GRENADE_DISTANCE + HUMAN_HEIGHT ){ continue; } | |
| 1021 | 1021 | |
| 1022 | 1022 | float dummy = 0.0f; |
| 1023 | 1023 | int total_damage = 0; |
| @@ -1090,7 +1090,7 @@ | ||
| 1090 | 1090 | arx = atan2(z, x); |
| 1091 | 1091 | |
| 1092 | 1092 | if( sin(atan2(y, sqrt(x*x + z*z))) < 0.0f ){ //上方向に飛ぶなら、角度を計算 |
| 1093 | - y2 = gy - (hy + HUMAN_HEIGTH); | |
| 1093 | + y2 = gy - (hy + HUMAN_HEIGHT); | |
| 1094 | 1094 | ary = atan2(y2, sqrt(x*x + z*z)) + (float)M_PI; |
| 1095 | 1095 | } |
| 1096 | 1096 | else{ //下方向に飛ぶなら、垂直角度は無効。(爆風で地面にめり込むのを防止) |
| @@ -1178,8 +1178,8 @@ | ||
| 1178 | 1178 | if( data.type == 1 ){ |
| 1179 | 1179 | |
| 1180 | 1180 | //腰辺りの座標を算出 |
| 1181 | - hx += cos(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGTH/2; | |
| 1182 | - hz += sin(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGTH/2; | |
| 1181 | + hx += cos(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGHT/2; | |
| 1182 | + hz += sin(hrx*-1 - (float)M_PI/2) * sin(hry) * HUMAN_HEIGHT/2; | |
| 1183 | 1183 | |
| 1184 | 1184 | //エフェクト(煙)の表示 |
| 1185 | 1185 | float rnd = DegreeToRadian(10)*GetRand(18); |
| @@ -2164,7 +2164,7 @@ | ||
| 2164 | 2164 | |
| 2165 | 2165 | //敵(攻撃対象)が攻撃ポイントに触れていれば、当たっている |
| 2166 | 2166 | if( (ax*ax + az*az) < 3.3f*3.3f ){ |
| 2167 | - if( (AttackPoint_y >= ty)&&(AttackPoint_y <= (ty + HUMAN_HEIGTH)) ){ | |
| 2167 | + if( (AttackPoint_y >= ty)&&(AttackPoint_y <= (ty + HUMAN_HEIGHT)) ){ | |
| 2168 | 2168 | return true; |
| 2169 | 2169 | } |
| 2170 | 2170 | } |