#1
by 白紙 » 6年前
フォーラム初参加・初質問です。よろしくおねがいします。
龍神録プログラミングの館にあるコードを使用しながら、東方型STGをC++で自作しています。
また、自機の作成においてMMDを使用した形にしています。
※関数の名前など一部違う箇所はありますが、基本的には龍神録プログラミングの館のものに沿ってコードを書いています。
【開発環境】
・Win7 Ultimate
・Visual Studio 2015 (C++)
現在、7章まで進めた所なのですが、プログラムを実行した所ボード画像が表示されません。
(成功ならばボードとMMDモデルが表示されるはずがMMDモデルだけが表示される)
参照違いも検討したりしましたが、結果目立ったエラーが見当たらず詰まっています。
関連するコードを下記にしるしました。
解決策わかる方がいましたらよろしくおねがいします。
main.cpp
コード:
#define GLOBAL_INSTANCE
#include <DxLib.h>
#include "global.h"
///ループ処理
int Process_Loop(){
if(ProcessMessage() != 0) return -1; //プロセス処理エラー時
if (ClearDrawScreen() != 0)return -1; //画面クリア処理エラー時
GetHitKeyStateAll_2(); //キー入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE); //ウィンドウモード
///初期化と裏画面化
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0)
return -1;
while (Process_Loop() == 0) {//メインループ
switch (func_state) {
case 0:
load(); //ロード
first_ini(); //初期化
func_state = 100;
break;
case 100:
graph_main(); //描画
break;
default:
printfDx("不明なfunc_state\n");
break;
}
if (CheckStateKey(KEY_INPUT_ESCAPE) == 1) break;
///裏画面反映
ScreenFlip;
}
DxLib_End();
return 0;
}
load.cpp
コード:
#include "global.h"
void load() {
///MMDモデル読み込み
MMDHandle = MV1LoadModel("Material/MMD/アールビット風博麗霊夢Ver2.1/アールビット風博麗霊夢 Type-Nlong.pmx");
///ボード画像読み込み
img_board[10] = LoadGraph("Material/Pic/board/10.png");
img_board[11] = LoadGraph("Material/Pic/board/11.png");
img_board[12] = LoadGraph("Material/Pic/board/12.png");
img_board[20] = LoadGraph("Material/Pic/board/20.png");
}
graph.cpp
コード:
#include "global.h"
void graph_mmd() {
MMD();
}
void graph_board() {
DrawGraph( 0, 0, img_board[10], FALSE);
DrawGraph( 0, 16, img_board[11], FALSE);
DrawGraph( 0, 464, img_board[12], FALSE);
DrawGraph(416, 0, img_board[20], FALSE);
}
void graph_main() {
graph_board();
graph_mmd();
}
MMD.cpp
コード:
///MMDモデル制御
#include <DxLib.h>
#include "global.h"
void MMD(){
int AttachIndex;
int angleX = 0, angleY = 0;
float TotalTime, PlayTime;
///カメラ範囲(0.1~100)
SetCameraNearFar(0.1f, 300.f);
///カメラ設置
SetCameraPositionAndTarget_UpVecY(VGet(0, 10, -150), VGet(0.0f, 20.0f, 50.0f));
///アニメーションアタッチ
AttachIndex = MV1AttachAnim(MMDHandle, 0, -1, FALSE);
///アニメーションの時間を取得、初期化
TotalTime = MV1GetAnimTotalTime(MMDHandle, AttachIndex);
PlayTime = 30.0f;
while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {
///再生時間
PlayTime += 0.2f;
if (PlayTime >= TotalTime) PlayTime = 30.0f;
MV1SetAttachAnimTime(MMDHandle, AttachIndex, PlayTime);
///モデル角度調整
angleY = 135;
MV1SetRotationXYZ(MMDHandle, VGet(0, angleY, 0));
///自機MMD配置
//MV1SetPosition(MMDHandle, VGet(ch.x, ch.y, 0));
//モデル描画
MV1DrawModel(MMDHandle);
}
}
フォーラム初参加・初質問です。よろしくおねがいします。
龍神録プログラミングの館にあるコードを使用しながら、東方型STGをC++で自作しています。
また、自機の作成においてMMDを使用した形にしています。
※関数の名前など一部違う箇所はありますが、基本的には龍神録プログラミングの館のものに沿ってコードを書いています。
【開発環境】
・Win7 Ultimate
・Visual Studio 2015 (C++)
現在、7章まで進めた所なのですが、プログラムを実行した所ボード画像が表示されません。
(成功ならばボードとMMDモデルが表示されるはずがMMDモデルだけが表示される)
[img]https://i.gyazo.com/f5a1cc5e05639edf59dc557729ec6edb.png[/img]
参照違いも検討したりしましたが、結果目立ったエラーが見当たらず詰まっています。
関連するコードを下記にしるしました。
解決策わかる方がいましたらよろしくおねがいします。
main.cpp
[code]
#define GLOBAL_INSTANCE
#include <DxLib.h>
#include "global.h"
///ループ処理
int Process_Loop(){
if(ProcessMessage() != 0) return -1; //プロセス処理エラー時
if (ClearDrawScreen() != 0)return -1; //画面クリア処理エラー時
GetHitKeyStateAll_2(); //キー入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE); //ウィンドウモード
///初期化と裏画面化
if(DxLib_Init() == -1 || SetDrawScreen(DX_SCREEN_BACK) != 0)
return -1;
while (Process_Loop() == 0) {//メインループ
switch (func_state) {
case 0:
load(); //ロード
first_ini(); //初期化
func_state = 100;
break;
case 100:
graph_main(); //描画
break;
default:
printfDx("不明なfunc_state\n");
break;
}
if (CheckStateKey(KEY_INPUT_ESCAPE) == 1) break;
///裏画面反映
ScreenFlip;
}
DxLib_End();
return 0;
}
[/code]
load.cpp
[code]
#include "global.h"
void load() {
///MMDモデル読み込み
MMDHandle = MV1LoadModel("Material/MMD/アールビット風博麗霊夢Ver2.1/アールビット風博麗霊夢 Type-Nlong.pmx");
///ボード画像読み込み
img_board[10] = LoadGraph("Material/Pic/board/10.png");
img_board[11] = LoadGraph("Material/Pic/board/11.png");
img_board[12] = LoadGraph("Material/Pic/board/12.png");
img_board[20] = LoadGraph("Material/Pic/board/20.png");
}
[/code]
graph.cpp
[code]
#include "global.h"
void graph_mmd() {
MMD();
}
void graph_board() {
DrawGraph( 0, 0, img_board[10], FALSE);
DrawGraph( 0, 16, img_board[11], FALSE);
DrawGraph( 0, 464, img_board[12], FALSE);
DrawGraph(416, 0, img_board[20], FALSE);
}
void graph_main() {
graph_board();
graph_mmd();
}
[/code]
MMD.cpp
[code]
///MMDモデル制御
#include <DxLib.h>
#include "global.h"
void MMD(){
int AttachIndex;
int angleX = 0, angleY = 0;
float TotalTime, PlayTime;
///カメラ範囲(0.1~100)
SetCameraNearFar(0.1f, 300.f);
///カメラ設置
SetCameraPositionAndTarget_UpVecY(VGet(0, 10, -150), VGet(0.0f, 20.0f, 50.0f));
///アニメーションアタッチ
AttachIndex = MV1AttachAnim(MMDHandle, 0, -1, FALSE);
///アニメーションの時間を取得、初期化
TotalTime = MV1GetAnimTotalTime(MMDHandle, AttachIndex);
PlayTime = 30.0f;
while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {
///再生時間
PlayTime += 0.2f;
if (PlayTime >= TotalTime) PlayTime = 30.0f;
MV1SetAttachAnimTime(MMDHandle, AttachIndex, PlayTime);
///モデル角度調整
angleY = 135;
MV1SetRotationXYZ(MMDHandle, VGet(0, angleY, 0));
///自機MMD配置
//MV1SetPosition(MMDHandle, VGet(ch.x, ch.y, 0));
//モデル描画
MV1DrawModel(MMDHandle);
}
}
[/code]