なぜかメニュー画面を実施したら表示がおかしくなった

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
プラム
記事: 164
登録日時: 10年前
住所: 東海地方

なぜかメニュー画面を実施したら表示がおかしくなった

#1

投稿記事 by プラム » 9年前

私は3Dのゲームを作っているのですが、ここのメニュー画面の作り方を参考にさせてもらったのですが、なぜかそれを付けてから表示がおかしくなってしまいました
画像 ←これ参照
カメラの初期化や、処理を間違えていじってしまったのかなと思ったのですが。何も変わっていなくて、何がおかしいのかわかりません。私は馬鹿なので。みなさん教えてくれたらうれしいです!

アバター
amehirune
記事: 181
登録日時: 10年前
住所: どっか
連絡を取る:

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#2

投稿記事 by amehirune » 9年前

私は3Dゲームを作ったことがないし、そもそも「実装した部分のソースコードすら乗せられていない」ので
何故おかしくなったのかを指摘するのは難しいです。

メニュー画面の作り方のURLから、言語はC(もしくはC++)で、DXライブラリを使っているものと断定します。

以下、これは私の考え方であり、一般世間において通用するかどうかはわからないということを念頭に入れて読んでください。

・まず、きちんと「メニュー部」と「ゲーム部」に関数・メゾットやファイルを分けているか?
同じファイルや関数内に作ってしまうと、プログラムがいろいろと複雑になってしまい、バグの原因になります。読みにくくもなるし。

・メニュー部において、ゲームデータ用の変数や設定に触れる回数を、必要最低限に抑えているか?
必要のない操作は省きましょう。というか、ゲームフェーズでメインとして扱う変数は、なるべくメニューで触れないことをお勧めします。
ただし、これはあくまで私の勝手な意見です。
オフトピック
これからは質問の際に、
・使用言語、及びライブラリ
・開発環境
・変更後ソースプログラム
・症状、及び本来の動作結果(できるだけ詳しく!)
・できれば考察
をかかれることをお勧めします
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

アバター
プラム
記事: 164
登録日時: 10年前
住所: 東海地方

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#3

投稿記事 by プラム » 9年前

すみません、最近あまり、ここのサイト使ってなくて、人とのコミュニケーション不足のせいか、いろいろ詳しくわかりやすく書くことができませんでした←安定のコミュ障
言語はC++です、DxLibとWindows.h、DirectXなどを使ってます
開発環境は、win8のVC++2010です
ソースは、
game.cpp

コード:

   	
//初期化
void Game_Initialize(){

	// プレイヤーの初期化
	pl=Player_Init(pl) ;
	

	// ステージの初期化
	Stage_Init() ;

	// カメラの初期化
	Camera_Init() ;


}
	
Player.cpp

コード:

// プレイヤーの初期化;
PLAYER Player_Init( PLAYER pla )
{
		    
	// X軸のマイナス方向のディレクショナルライトに変更
    ChangeLightTypeDir( VGet( -1.0f, 0.0f, 0.0f  ) ) ;
	
	// 初期座標は原点
	pla.Position = VGet( 0.0f, 0.0f, -300.0f ) ;
	GraphHandle[0] = LoadGraph("kasoku.png");
	GraphHandle[1] = LoadGraph("kasoku2.png");

	// 回転値は0
	pla.Angle = 0.0f ;

	// ジャンプ力は初期状態では0
	pla.JumpPower = 0.0f ;

	// モデルの読み込み
	pla.ModelHandle = MV1LoadModel( "tress.mqo" ) ;

	// 初期状態では「立ち止り」状態
	pla.State = 0 ;

	// 初期状態でプレイヤーが向くべき方向はX軸方向
	pla.TargetMoveDirection = VGet( 1.0f, 0.0f, 0.0f ) ;
	return pla;
}
こんな感じです
そして、本当は、上の画像のように透けて見えず、普通に見えるはずなのですが、なぜか・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#4

投稿記事 by softya(ソフト屋) » 9年前

Zバッファがクリアされていない感じがします。
毎フレーム、ちゃんとClearDrawScreen()してるか確認すると良いことがあるでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
プラム
記事: 164
登録日時: 10年前
住所: 東海地方

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#5

投稿記事 by プラム » 9年前

>>ソフト屋さん
自分もそう思って、確認したんですが、

コード:

// WinMain
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
	// ウインドウモードで起動
	ChangeWindowMode( TRUE ) ;

	// ライブラリの初期化
	if( DxLib_Init() < 0 )
		return -1 ;

	// 描画先を裏画面にする
	SetDrawScreen( DX_SCREEN_BACK ) ;
	
	Scene_Init();//初期化

	while( ProcessMessage() == 0)
	{
		// 画面をクリア
		ClearDrawScreen() ;

		Key_Update();
       

		Scene_Update();

		Scene_Draw();

		// 裏画面の内容を表画面に反映
		ScreenFlip() ;
	}
	
	Scene_Final();
	// ライブラリの後始末
	DxLib_End() ;

	// ソフト終了
	return 0 ;
}
ちゃんとこんな感じになっていました、なので原因が私にはまったくわかりません、なぜなのでしょう・・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#6

投稿記事 by softya(ソフト屋) » 9年前

ソースコード全体がないので細かいところは分かりませんが、ClearDrawScreen() ;をちゃんと通過しているかデバッガで確認と、2回以上の違うカメラでレンダリングしてないかなどを確認を。あとCameraNaerFarなどのZバッファ設定をちゃんとカメラの初期化で行いましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
プラム
記事: 164
登録日時: 10年前
住所: 東海地方

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#7

投稿記事 by プラム » 9年前

>そふとやさん
いろいろいじってたらなんか治りましたw
たぶんカメラの設定だったと思います、ありがとうございます!
みなさんありがとうございました!

DoomMuffins
記事: 1
登録日時: 9年前

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#8

投稿記事 by DoomMuffins » 9年前

もう解決したようですが、DirectXなどで「○○を実装してからそれ以外がおかしくなった」となると、まずはレンダーステートを確認したほうがいいと思います。たとえば、メニュー描画のためZバッファーをオフにして、終わってからまたオンにすることを忘れてしまった場合、それ以降の描画もZバッファーオフとなってしまいます。

hide

Re: なぜかメニュー画面を実施したら表示がおかしくなった

#9

投稿記事 by hide » 9年前

オフトピック
なんかよくわかんないけど直ったという状況はぶっちゃけた話原因を突き止めたが直せなかった時より悪い状況だと思うので、
差分確認くらいできるようにしたほうがいいと思いました。

閉鎖

“C言語何でも質問掲示板” へ戻る