MMDゲーム化計画@wiki

ミニテクニック

最終更新:

mmdgame

- view
だれでも歓迎! 編集

技術指南/ミニテクニック


このページはDxLibでゲームなり何なりを作る上で役に立つ?と思われるアルゴリズムorお役立ち情報の紹介です.
基本,3Dネタを紹介する予定です.

まず,DxLibのサンプルプログラムは見ておきましょう.多分参考になる技術も幾つかあるかもしれません.
あとは,同じくDxLibの掲示板もログを漁るなどしてみると意外と同じ疑問を持った方がいらっしゃるかもしれません.



NowLoadingのやり方(非同期読み込み)@Ver.3.07~
DxLibのver.3.07から非同期読み込みが対応しました.
それにより,ゲームでよくあるNowLoading...といったロード中の演出も可能です.
関数のリファレンスに関しては本家のページを参考.
そのサンプルを以下に.(本家DxLibのリファレンスを一部改良)
  • ソース
+ ...
  1. #include "DxLib.h"
  2. //最大読み込み数
  3. #define load_max 20
  4. //main
  5. int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
  6. {
  7. int GrHandle[ load_max];//読み込みの配列
  8. int StartTime ;//開始時間
  9. int EndTime;//終了時間
  10. bool LoadFlag = false;//完了フラグ
  11.  
  12. // ウインドウモードで起動
  13. ChangeWindowMode( TRUE ) ;
  14. // DXライブラリの初期化
  15. if( DxLib_Init() < 0 ) return -1 ;
  16.  
  17. // 現在経過時間を得る
  18. StartTime = GetNowCount() ;
  19. // 非同期読み込み設定に変更
  20. SetUseASyncLoadFlag( TRUE ) ;
  21.  
  22. // load_max回読み込む
  23. for(int i = 0 ; i < load_max ; i ++ )
  24. {
  25. MV1SetLoadModelUsePhysicsMode( DX_LOADMODEL_PHYSICS_DISABLE ) ;//一応非物理演算モードで読み込む
  26. GrHandle[ i ] = MV1LoadModel( "DxChara.x" ) ; //DXLIB付属モデル
  27. }
  28.  
  29. // 同期読み込み設定に変更
  30. SetUseASyncLoadFlag( FALSE ) ;
  31. // 描画先を裏画面にする
  32. SetDrawScreen( DX_SCREEN_BACK ) ;
  33.  
  34. // メインループ(何かキーが押されたらループを抜ける)
  35. while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 )
  36. {
  37. // 画面のクリア
  38. ClearDrawScreen() ;
  39.  
  40. //読み込み率のバーを表示
  41. DrawBox(50,50,550,50+20,GetColor(255,255,255),0);
  42. DrawBox(50,50,550-500/load_max*GetASyncLoadNum(),50+20,GetColor(255,255,255),1);
  43. if(GetASyncLoadNum() >0 )
  44. {//まだ読み込み中なら表示
  45. DrawFormatString( 0, 20, GetColor( 255,255,255 ), "Now Loading...[%d%]", (load_max-GetASyncLoadNum())*100/load_max ) ;
  46. }else
  47. {//読み込み完了動作
  48. if(LoadFlag == false)
  49. {//読み込み完了フラグがfalseならば
  50. EndTime = GetNowCount() ;// 現在経過時間を得る
  51. LoadFlag = true;
  52. }
  53. //まだ読み込み中なら表示
  54. DrawFormatString( 0, 20, GetColor( 255,255,255 ), "読み込み終了...何かキーを押し終了して下さい@読み込み時間:%d[ms]", EndTime - StartTime) ;
  55. }
  56. // 現在の非同期読み込みの数を描画
  57. DrawFormatString( 0, 0, GetColor( 255,255,255 ), "非同期読み込みの数 %d[最大数:%d]", GetASyncLoadNum(),load_max ) ;
  58.  
  59. // 裏画面の内容を表画面に反映
  60. ScreenFlip();
  61. }
  62. // DXライブラリの後始末
  63. DxLib_End();
  64. // ソフトの終了
  65. return 0;
  66. }
  67.  

3Dゲームでの剣を振りかざした時の残像の作り方@DxLib掲示板
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=790
なかなか綺麗に残像が出そう

DxLibとBullet(物理エンジン)との連携などについて@わくわくプログラミング自習室
http://i-libro.net/wpmu
もしかすると役に立つかも…

DxLib(DxLib.h)の関数一覧?@AEXE.のHP
http://www.aexe.net/DxlibH_305_func.htm
公式より更に踏み込んだ感じのリスト

3Dモデルのワイヤーフレーム表示方法
int MV1SetWireFrameDrawFlag( int MHandle, int Flag );//モデルをワイヤーフレームで描画するかどうかを設定する
上記の関数を用いて引数のFlag=TRUEとしてからMV1DrawModel(int MHandle);関数を使って表示するとワイヤーフレームでモデルが表示されます.
  1. int model;//モデルの変数
  2. //中略
  3. MV1SetWireFrameDrawFlag(model,TRUE);//ワイヤーフレームの有効
  4. MV1DrawModel(model);//モデルの表示
  5.  

爆発などで画面を歪ませる処理@DxLib掲示板
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=2295
最新のライブラリでないと動かない関数を利用しているので注意(3.06f)

ウインドウのX(閉じる)を押された時のイベントを取得する処理@DxLib掲示板
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=320
http://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=1602
勝手にウインドウを閉じられると困る場合には使えそうです.Ex.セーブデータなど...

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

記事メニュー
目安箱バナー