X operations(XOPS)に非常に近いFPSゲームを制作・リメイクし、成果物をオープンソースとして公開することを目的としたプロジェクトです。
| Revision | 159 (tree) |
|---|---|
| Time | 2017-01-09 23:53:27 |
| Author | |
オープニングシーンのカメラワークなどを改善、メニュー画面のスクロールバーに関するバグの修正
| @@ -172,7 +172,13 @@ | ||
| 172 | 172 | |
| 173 | 173 | //! @brief コンストラクタ |
| 174 | 174 | opening::opening() |
| 175 | -{} | |
| 175 | +{ | |
| 176 | + add_camera_x = 0.0f; | |
| 177 | + add_camera_y = 0.0f; | |
| 178 | + add_camera_z = 0.0f; | |
| 179 | + add_camera_rx = 0.0f; | |
| 180 | + add_camera_ry = 0.0f; | |
| 181 | +} | |
| 176 | 182 | |
| 177 | 183 | //! @brief ディストラクタ |
| 178 | 184 | opening::~opening() |
| @@ -225,6 +231,17 @@ | ||
| 225 | 231 | inputCtrl->MoveMouseCenter(); |
| 226 | 232 | framecnt = 0; |
| 227 | 233 | |
| 234 | + camera_x = -5.0f; | |
| 235 | + camera_y = 58.0f; | |
| 236 | + camera_z = 29.0f; | |
| 237 | + camera_rx = DegreeToRadian(206); | |
| 238 | + camera_ry = DegreeToRadian(12); | |
| 239 | + add_camera_x = 0.0f; | |
| 240 | + add_camera_y = 0.0f; | |
| 241 | + add_camera_z = 0.0f; | |
| 242 | + add_camera_rx = 0.0f; | |
| 243 | + add_camera_ry = 0.0f; | |
| 244 | + | |
| 228 | 245 | GameState->NextState(); |
| 229 | 246 | return 0; |
| 230 | 247 | } |
| @@ -272,23 +289,45 @@ | ||
| 272 | 289 | HumanAI[i].Process(); |
| 273 | 290 | } |
| 274 | 291 | |
| 275 | - //カメラワークを求める | |
| 276 | - if( framecnt < 3*((int)GAMEFPS) ){ | |
| 277 | - camera_x = -5.0f; | |
| 278 | - camera_y = 58.0f; | |
| 279 | - camera_z = 29.0f; | |
| 280 | - camera_rx = DegreeToRadian(206); | |
| 281 | - camera_ry = DegreeToRadian(12); | |
| 292 | + //カメラワークを求める(座標) | |
| 293 | + if( framecnt < (int)(4.0f*GAMEFPS) ){ | |
| 294 | + add_camera_z = 0.0f; | |
| 295 | + add_camera_y = 0.0f; | |
| 282 | 296 | } |
| 283 | - else if( framecnt < 5*((int)GAMEFPS) ){ | |
| 284 | - camera_rx += DegreeToRadian(1.1f); | |
| 285 | - camera_ry -= DegreeToRadian(0.7f); | |
| 297 | + else if( framecnt < (int)(5.0f*GAMEFPS) ){ | |
| 298 | + add_camera_z += (0.08f - add_camera_z) / 5.0f; | |
| 299 | + add_camera_y += (-0.05f - add_camera_y) / 5.0f; | |
| 286 | 300 | } |
| 287 | - else if( framecnt < 17*((int)GAMEFPS) ){ | |
| 288 | - camera_z += 0.08f; | |
| 289 | - camera_y -= 0.05f; | |
| 301 | + else{ | |
| 302 | + add_camera_z = 0.08f; | |
| 303 | + add_camera_y = -0.05f; | |
| 290 | 304 | } |
| 291 | - else { | |
| 305 | + camera_x += add_camera_x; | |
| 306 | + camera_y += add_camera_y; | |
| 307 | + camera_z += add_camera_z; | |
| 308 | + | |
| 309 | + //カメラワークを求める(回転) | |
| 310 | + if( framecnt < (int)(2.6f*GAMEFPS) ){ | |
| 311 | + add_camera_rx = 0.0f; | |
| 312 | + add_camera_ry = 0.0f; | |
| 313 | + } | |
| 314 | + else if( framecnt < (int)(3.6f*GAMEFPS) ){ | |
| 315 | + add_camera_rx += (DegreeToRadian(0.9f) - add_camera_rx) / 5.0f; | |
| 316 | + add_camera_ry += (DegreeToRadian(-0.6f) - add_camera_ry) / 5.0f; | |
| 317 | + } | |
| 318 | + else if( framecnt < (int)(5.0f*GAMEFPS) ){ | |
| 319 | + add_camera_rx = DegreeToRadian(0.9f); | |
| 320 | + add_camera_ry = DegreeToRadian(-0.6f); | |
| 321 | + } | |
| 322 | + else{ | |
| 323 | + add_camera_rx *= 0.8f; | |
| 324 | + add_camera_ry *= 0.8f; | |
| 325 | + } | |
| 326 | + camera_rx += add_camera_rx; | |
| 327 | + camera_ry += add_camera_ry; | |
| 328 | + | |
| 329 | + //16秒経ったら終了 | |
| 330 | + if( framecnt >= 16*((int)GAMEFPS) ){ | |
| 292 | 331 | GameState->PushMouseButton(); |
| 293 | 332 | } |
| 294 | 333 |
| @@ -353,16 +392,16 @@ | ||
| 353 | 392 | } |
| 354 | 393 | |
| 355 | 394 | //スタッフ名・その1 |
| 356 | - if( ((int)(4.0f*GAMEFPS) < framecnt)&&(framecnt < (int)(8.0f*GAMEFPS)) ){ | |
| 395 | + if( ((int)(4.5f*GAMEFPS) < framecnt)&&(framecnt < (int)(8.5f*GAMEFPS)) ){ | |
| 357 | 396 | float effectA = 1.0f; |
| 358 | - if( framecnt < (int)(5.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 4.0f, false); } | |
| 359 | - if( framecnt > (int)(7.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 7.0f, true); } | |
| 397 | + if( framecnt < (int)(5.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 4.5f, false); } | |
| 398 | + if( framecnt > (int)(7.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 7.5f, true); } | |
| 360 | 399 | d3dg->Draw2DTextureFontText(60, 150, "ORIGINAL", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); |
| 361 | 400 | } |
| 362 | - if( ((int)(4.5f*GAMEFPS) < framecnt)&&(framecnt < (int)(8.5f*GAMEFPS)) ){ | |
| 401 | + if( ((int)(5.0f*GAMEFPS) < framecnt)&&(framecnt < (int)(9.0f*GAMEFPS)) ){ | |
| 363 | 402 | float effectA = 1.0f; |
| 364 | - if( framecnt < (int)(5.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 4.5f, false); } | |
| 365 | - if( framecnt > (int)(7.5f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 7.5f, true); } | |
| 403 | + if( framecnt < (int)(6.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 5.0f, false); } | |
| 404 | + if( framecnt > (int)(8.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 8.0f, true); } | |
| 366 | 405 | d3dg->Draw2DTextureFontText(100, 180, "nine-two", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); |
| 367 | 406 | d3dg->Draw2DTextureFontText(100, 210, "TENNKUU", d3dg->GetColorCode(1.0f,1.0f,1.0f,effectA), 20, 20); |
| 368 | 407 | } |
| @@ -383,13 +422,13 @@ | ||
| 383 | 422 | } |
| 384 | 423 | |
| 385 | 424 | //ゲーム名 |
| 386 | - if( (int)(12.0f*GAMEFPS) <= framecnt ){ //framecnt < (int)(17.0f*GAMEFPS) | |
| 425 | + if( (int)(12.0f*GAMEFPS) <= framecnt ){ //framecnt < (int)(16.0f*GAMEFPS) | |
| 387 | 426 | char str[32]; |
| 388 | 427 | float effectA = 1.0f; |
| 389 | 428 | sprintf(str, GAMENAME); |
| 390 | 429 | if( framecnt < (int)(13.0f*GAMEFPS) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 12.0f, false); } |
| 391 | - if( ((int)(16.0f*GAMEFPS) < framecnt)&&(framecnt < (int)(17.0f*GAMEFPS)) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 16.0f, true); } | |
| 392 | - if( framecnt >= (int)(17.0f*GAMEFPS) ){ effectA = 0.0f; } | |
| 430 | + if( ((int)(15.0f*GAMEFPS) < framecnt)&&(framecnt < (int)(16.0f*GAMEFPS)) ){ effectA = GetEffectAlpha(framecnt, 1.0f, 1.0f, 15.0f, true); } | |
| 431 | + if( framecnt >= (int)(16.0f*GAMEFPS) ){ effectA = 0.0f; } | |
| 393 | 432 | d3dg->Draw2DTextureFontText(SCREEN_WIDTH/2 - strlen(str)*22/2, (SCREEN_HEIGHT-11)/2, str, d3dg->GetColorCode(1.0f,0.0f,0.0f,effectA), 22, 22); |
| 394 | 433 | } |
| 395 | 434 | } |
| @@ -512,8 +551,8 @@ | ||
| 512 | 551 | mainmenu_scrollbar_addon_scale = 0.0f; |
| 513 | 552 | } |
| 514 | 553 | |
| 515 | - mainmenu_scrollbar_official_y = 141; | |
| 516 | - mainmenu_scrollbar_addon_y = 141; | |
| 554 | + mainmenu_scrollbar_official_y = MAINMENU_Y+1 + (int)(mainmenu_scrollbar_official_scale*mainmenu_scrollitems_official); | |
| 555 | + mainmenu_scrollbar_addon_y = MAINMENU_Y+1 + (int)(mainmenu_scrollbar_addon_scale*mainmenu_scrollitems_addon); | |
| 517 | 556 | mainmenu_scrollbar_flag = false; |
| 518 | 557 | inputCtrl->MoveMouseCenter(); |
| 519 | 558 | framecnt = 0; |
| @@ -2110,19 +2149,7 @@ | ||
| 2110 | 2149 | |
| 2111 | 2150 | //デバック用・ゲーム情報の表示 |
| 2112 | 2151 | if( (ShowInfo_Debugmode == true)||(Camera_Debugmode == true) ){ |
| 2113 | - //システムフォントによる表示 日本語可・重い | |
| 2114 | - /* | |
| 2115 | - sprintf(str, "OpenXOPS テスト\ncamera x:%.2f y:%.2f z:%.2f rx:%.2f ry:%.2f\n" | |
| 2116 | - "human[%d]:x:%.2f y:%.2f z:%.2f rx:%.2f\n" | |
| 2117 | - "I:%02dms PO:%02dms PA:%02dms PE:%02dms R:%02dms", | |
| 2118 | - camera_x, camera_y, camera_z, camera_rx, camera_ry, | |
| 2119 | - ObjMgr.GetPlayerID(), human_x, human_y, human_z, human_rx, | |
| 2120 | - time_input, time_process_object, time_process_ai, time_process_event, time_render); | |
| 2121 | - d3dg->Draw2DMSFontText(10+1, 10+1, str, d3dg->GetColorCode(0.1f,0.1f,0.1f,1.0f)); | |
| 2122 | - d3dg->Draw2DMSFontText(10, 10, str, d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f)); | |
| 2123 | - */ | |
| 2124 | - | |
| 2125 | - //テクスチャフォントによる表示 軽い・半角英数字と記号のみ | |
| 2152 | + //テクスチャフォントによる表示(半角英数字と記号のみ) | |
| 2126 | 2153 | sprintf(str, "frame:%d time %02d:%02d", framecnt, framecnt/(int)GAMEFPS/60, framecnt/(int)GAMEFPS%60); |
| 2127 | 2154 | d3dg->Draw2DTextureDebugFontText(10+1, 10+1, str, d3dg->GetColorCode(0.1f,0.1f,0.1f,1.0f)); |
| 2128 | 2155 | d3dg->Draw2DTextureDebugFontText(10, 10, str, d3dg->GetColorCode(1.0f,1.0f,1.0f,1.0f)); |
| @@ -92,6 +92,11 @@ | ||
| 92 | 92 | //! @details オープニング画面を管理します。 |
| 93 | 93 | class opening : public D3Dscene |
| 94 | 94 | { |
| 95 | + float add_camera_x; //!< カメラ座標 Xの増減量 | |
| 96 | + float add_camera_y; //!< カメラ座標 Yの増減量 | |
| 97 | + float add_camera_z; //!< カメラ座標 Zの増減量 | |
| 98 | + float add_camera_rx; //!< カメラ回転角度 RXの増減量 | |
| 99 | + float add_camera_ry; //!< カメラ回転角度 RYの増減量 | |
| 95 | 100 | //int opening_banner; //!< オープニングで表示するテクスチャID |
| 96 | 101 | void Render3D(); |
| 97 | 102 | void Render2D(); |