トップページ > 記事閲覧
就活のために デスクトップマスコットを作りたい!🔰パート2
名前:kukaniki 日時: 2024/12/26 18:22

ディレクトリ: bokoboko000L.vmd bokoboko.pmd ソースコード: #includ <DxLib.h> #includ <windows.h> // WinMainの注釈用 #includ <cstdio> #includ <cmath> // sin, cos関数用 // グローバル変数 float CameraX = 0.0f; // カメラのX座標 float CameraZ = -30.0f; // カメラのZ座標(初期値として後方に配置) float CameraY = 10.0f; // カメラのY座標(高さ) float MoveSpeed = 0.5f; // カメラの移動速度 // グリッドを描画する関数 void DrawGrid(int gridSize, int gridStep) { int gridColor = GetColor(200, 200, 200); // グリッドの色を薄いグレーに変更 for (int x = -gridSize; x <= gridSize; x += gridStep) { // Z軸に平行な線を描画(色を強くするため、太い線を表現) DrawLine3D(VGet((float)x, 0.0f, (float)-gridSize), VGet((float)x, 0.0f, (float)gridSize), gridColor); } for (int z = -gridSize; z <= gridSize; z += gridStep) { // X軸に平行な線を描画(色を強くするため、太い線を表現) DrawLine3D(VGet((float)-gridSize, 0.0f, (float)z), VGet((float)gridSize, 0.0f, (float)z), gridColor); } } // プログラムは WinMain から始まります int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { ChangeWindowMode(TRUE); // ウィンドウモードで起動 int ModelHandle, AttachIndex; float TotalTime, PlayTime = 0.0f; // アニメーション再生時間を保持 SetGraphMode(800, 600, 32); // ウィンドウサイズを800x600に設定 SetBackgroundColor(0, 0, 0); // 背景を黒に設定 if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } SetDrawScreen(DX_SCREEN_BACK); // 描画先画面を裏画面にセット // カメラの初期設定 SetCameraNearFar(0.1f, 100.0f); // モデルの読み込み(PMDファイル) ModelHandle = MV1LoadModel("C:\\Users\\PC\\Downloads\\ボコボコにしてやんよ\\ボコボコにしてやんよ\\bokoboko.pmd"); if (ModelHandle == -1) { MessageBox(NULL, "モデルの読み込みに失敗しました。", "エラー", MB_OK); DxLib_End(); return -1; } AttachIndex = MV1AttachAnim(ModelHandle, 0, -1, FALSE); TotalTime = MV1GetAttachAnimTotalTime(ModelHandle, AttachIndex); // 色の定義(白色) int siro = GetColor(255, 255, 255); while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) { // アニメーションの再生時間を進める PlayTime += 0.086f; // 60FPS想定で時間を進める if (PlayTime > TotalTime) { PlayTime = 0.0f; // アニメーションをループさせる } // アニメーションの進行に合わせてキャラクターを再生 MV1SetAttachAnimTime(ModelHandle, AttachIndex, PlayTime); // カメラ移動処理 (W, A, S, Dキーで移動) if (CheckHitKey(KEY_INPUT_W) != 0) { PlayTime = 0.0f; // 前進(Z軸方向にプラス) CameraZ += MoveSpeed; } if (CheckHitKey(KEY_INPUT_S) != 0) { // 後退(Z軸方向にマイナス) CameraZ -= MoveSpeed; } if (CheckHitKey(KEY_INPUT_A) != 0) { // 左移動(X軸方向にマイナス) CameraX -= MoveSpeed; } if (CheckHitKey(KEY_INPUT_D) != 0) { // 右移動(X軸方向にプラス) CameraX += MoveSpeed; } if // カメラの位置とターゲット(正面に固定) VECTOR CameraPosition = VGet(CameraX, CameraY, CameraZ); VECTOR CameraTarget = VGet(CameraX, CameraY, CameraZ + 1.0f); // カメラの向きは常にZ軸方向に設定 SetCameraPositionAndTarget_UpVecY(CameraPosition, CameraTarget); // 画面のクリア ClearDrawScreen(); // グリッドの描画 DrawGrid(40, 4); // グリッドサイズを大きく、ステップ間隔も大きくしました // 3Dモデルの描画 MV1DrawModel(ModelHandle); // 2Dテキストの描画 - カメラ位置の表示 DrawFormatString(0, 0, siro, "Camera X: %.2f", CameraX); // カメラのX位置を表示 DrawFormatString(0, 20, siro, "Camera Z: %.2f", CameraZ); // カメラのZ位置を表示 DrawFormatString(0, 40, siro, "PlayTime: %.2f", PlayTime); // アニメーションの再生時間を表示 // 矢印キーの状態を表示 if (CheckHitKey(KEY_INPUT_UP)) { DrawString(0, 60, "↑ Up key pressed", siro); // ↑キーが押されている場合 } if (CheckHitKey(KEY_INPUT_DOWN)) { DrawString(0, 80, "↓ Down key pressed", siro); // ↓キーが押されている場合 } if (CheckHitKey(KEY_INPUT_LEFT)) { DrawString(0, 100, "← Left key pressed", siro); // ←キーが押されている場合 } if (CheckHitKey(KEY_INPUT_RIGHT)) { DrawString(0, 120, "→ Right key pressed", siro); // →キーが押されている場合 } // 画面更新 ScreenFlip(); } // モデルの解放とDXライブラリの終了 MV1DeleteModel(ModelHandle); DxLib_End(); return 0; } デスクトップマスコットのキャラクターを操作できるようにしたいです。 やりたいこと★ フレームの取得がしたい:どうすれば、vmdのアニメーションのフレームを操作できますか? モデルの消滅させたくない:vmdの動画が終わるとキャラクターが消滅してしまいます。 Shift+で走る。 右キーをおせば右に向いて歩く 左キーをおせば左向いて歩く 上キーを押せばジャンプする。 下キーを押せば画面にづいてくる。nearの調整で透過させない httpps://bowlroll.net/file/9451 モデル。
メンテ

Page: 1 |

Re: 就活のために デスクトップマスコットを作りたい!&#128304;パート2 ( No.1 )
名前:管理人 日時:2024/12/27 01:25

> フレームの取得がしたい:どうすれば、vmdのアニメーションのフレームを操作できますか? 再生しているフレーム番号を取得したいということでしょうか? もしそうでしたら PlayTime / ( 1.0f / 30.0f ) の演算結果がフレーム番号となります > モデルの消滅させたくない:vmdの動画が終わるとキャラクターが消滅してしまいます。 プログラムを拝見する限りではキャラクターが消滅するような処理は無さそうです bokoboko000L.vmd のデータに問題があるのかもしれません > Shift+で走る。 > 右キーをおせば右に向いて歩く > 左キーをおせば左向いて歩く > 上キーを押せばジャンプする。 > 下キーを押せば画面にづいてくる。nearの調整で透過させない MV1SetPosition でモデルの描画座標を変更できますので、各キーに合わせてモデルの座標を移動させてください
メンテ
Re: 就活のために デスクトップマスコットを作りたい!&#128304;パート2 ( No.2 )
名前:kukaniki 日時:2025/01/03 20:38

有難うございます。解決しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存