趣味でプログラムを組んでいるTOKEIと申します。
現在、3Dでゲームを作ろうと思い試しにDXライブラリで移動テストを作ってみたのですがモデルに近づくとポリゴンが表示されなくなってしまいます。
ポリゴン単位での読み込みの問題かと思っているのですが、解決方法はもとよりなぜこうなるのかすらはっきりしていません。
どうかこのコードの問題点をご指摘ください。
lang
1#include "DxLib.h" 2#include "math.h" 3int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int nCmdShow) 4{ 5 int StageHD; 6 int PlayerModel; 7 VECTOR CameraPos; 8 VECTOR PlayerPos; 9 float PlayerV=0.0f,PlayerH=0.0f; 10 VECTOR EnemyPos; 11 float EnemyV=0; 12 SetGraphMode(1600, 1000, 32); 13 ChangeWindowMode(TRUE); 14 if (DxLib_Init() == 1) { 15 DxLib_End(); 16 MessageBox(0, "DirectXの初期化に失敗しました。\nDiretX9がインストールされているか確認してください", "MMDMMO Dev1-3-15", MB_OK | MB_ICONSTOP); 17 return 1; 18 } 19 StageHD=MV1LoadModel("models/gekido-town.x"); 20 PlayerModel = MV1LoadModel("models/Player/ameno.pmx"); 21 MV1DrawModel(StageHD); 22 MV1DrawModel(PlayerModel); 23 // 描画先を裏画面にする 24 SetDrawScreen(DX_SCREEN_BACK); 25 26 // カメラの座標を初期化 27 PlayerPos.x = 0.0f; 28 PlayerPos.y = 100.0f; 29 PlayerPos.z = 0.0f; 30 31 // ESCキーが押されるかウインドウが閉じられるまでループ 32 while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) 33 { 34 // 画面をクリア 35 ClearDrawScreen(); 36 37 // WASD+スペース+SHIFTでカメラの座標を移動 38 if (CheckHitKey(KEY_INPUT_W) == 1) 39 { 40 PlayerPos.x += sin(PlayerH)*1.0f; 41 PlayerPos.z += cos(PlayerH)*1.0f; 42 } 43 if (CheckHitKey(KEY_INPUT_S) == 1) 44 { 45 PlayerPos.z -= 1.0f; 46 } 47 if (CheckHitKey(KEY_INPUT_A) == 1) 48 { 49 PlayerPos.x -= 1.0f; 50 } 51 if (CheckHitKey(KEY_INPUT_D) == 1) 52 { 53 PlayerPos.x += 1.0f; 54 } 55 if (CheckHitKey(KEY_INPUT_SPACE)) 56 { 57 PlayerPos.y += 1.0f; 58 } 59 if (CheckHitKey(KEY_INPUT_RSHIFT)) 60 { 61 PlayerPos.y -= 1.0f; 62 } 63 //方向キーでカメラの向きを移動 64 if (CheckHitKey(KEY_INPUT_UP)==1) 65 { 66 PlayerV -= DX_PI_F / 60.0f; 67 } 68 if (CheckHitKey(KEY_INPUT_DOWN) == 1) 69 { 70 PlayerV += DX_PI_F / 60.0f; 71 } 72 if (CheckHitKey(KEY_INPUT_LEFT)==1){ 73 PlayerH -= DX_PI_F / 60.0f; 74 } 75 if (CheckHitKey(KEY_INPUT_RIGHT) == 1) 76 { 77 PlayerH += DX_PI_F / 60.0f; 78 } 79 CameraPos = PlayerPos; 80 CameraPos.y += 50; 81 // カメラの位置と注視点をセット、注視点は原点 82 SetCameraPositionAndAngle(PlayerPos,PlayerV,PlayerH,0); 83 84 // モデルの描画 85 MV1DrawModel(StageHD); 86 MV1DrawModel(PlayerModel); 87 MV1SetPosition(PlayerModel, PlayerPos); 88 // 裏画面の内容を表画面に反映 89 ScreenFlip(); 90 } 91 WaitKey(); 92 DxLib_End(); 93 return 0; 94}
開発中なのでまだ使用していない変数や、Warningなど残っていますがなにとぞよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/03/01 06:39