トップページ > 過去ログ > 記事閲覧
3DによるRPG
名前:YH 日時: 2010/01/02 21:03

DXライブラリの3D機能を用いて、簡単なRPGのサンプルプログラムは作れるでしょうか? また、3DでRPGを作る場合、 プログラミングに関して意識したほうが良い形式など、ありますでしょうか?

Page: 1 |

Re: 3DによるRPG ( No.1 )
名前:管理人 日時:2010/01/03 23:27

質問を分解してもよろしいでしょうか? ・DXライブラリを使ってRPGは作れるか?  作れます ・DXライブラリを使って3DRPGは作れるか?  実績が無いので断言はできませんが、多分作れます ・DXライブラリを使ってRPGのサンプルプログラムは作れるか?  しっかりとしたRPGも作れるのでサンプルプログラムも当然作れます ・DXライブラリを使って3DRPGのサンプルプログラムは作れるか?  実績が無いので断言はできませんが、多分作れます > また、3DでRPGを作る場合、 > プログラミングに関して意識したほうが良い形式など、ありますでしょうか? ちょっとご質問が漠然としていてお答えできません・・・ が、私自身3DのRPGを作成したことが無いので、恐らく具体的なご質問を頂いても お答えできないような気もします (・・;;
Re: 3DによるRPG ( No.2 )
名前:YH 日時:2010/01/05 15:51

管理人さんへ お返事ありがとうございます。 現在、3D空間にモデルを表示するところまではいったのですが、 ベクトル演算や、行列変換は数学として解るのですが、実際、モデルをYを基軸とし回転させる場合、 MATRIX MGetRotY( float YAxisRotate ) 関数を用いるのですよね? その後、回転させたモデルが描画されないのですが。 MV1DrawModel関数のみが、 モデルの描画処理を担う唯一の関数なのでしょうか? すみません ちょっとまだDXライブラリの機能を理解していないので、 的外れなことを云っているかもしれませんが 下記のようなY軸の回転があったとして、 |cosθ 0 -sinθ 0| |0 1 0 0| |sinθ 0 cosθ 0| |0 0 0 1| これをどうC言語とDXライブラリで実装するのかがよくわかりません。
Re: 3DによるRPG ( No.3 )
名前:いっち 日時:2010/01/06 02:37

雑な例で申し訳ないですが、MV1Modelの移動と回転をやってみました。 十字キーでXZ平面の平行移動。ZXキーでY軸回転になっています。 モデルの向きを直接ベクトルで指定する関数は無いようです。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( true ); if ( DxLib_Init() < 0 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); int PlayerHandle = MV1LoadModel( "DxChara.x" ); VECTOR PlayerPosition = VGet( 0.0f, 0.0f, 0.0f ); float PlayerAngle = 0.0f; const float MoveRate = 10.0f; const float RotationRate = PHI_F * 2.0f / 60.0f; SetCameraPositionAndTarget_UpVecY( VGet( 0.0f, 500.0f, -2000.0f ), VGet( 0.0f, 500.0f, 0.0f ) ); while ( ProcessMessage( ) == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { if ( CheckHitKey( KEY_INPUT_UP ) == 1 ) PlayerPosition.z += MoveRate; if ( CheckHitKey( KEY_INPUT_DOWN ) == 1 ) PlayerPosition.z -= MoveRate; if ( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) PlayerPosition.x -= MoveRate; if ( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) PlayerPosition.x += MoveRate; if ( CheckHitKey( KEY_INPUT_Z ) == 1 ) PlayerAngle += RotationRate; if ( CheckHitKey( KEY_INPUT_X ) == 1 ) PlayerAngle -= RotationRate; ClearDrawScreen( ); MV1SetPosition( PlayerHandle, PlayerPosition ); MV1SetRotationXYZ( PlayerHandle, VGet( 0.0f, PlayerAngle, 0.0f ) ); MV1DrawModel( PlayerHandle ); ScreenFlip( ); } MV1DeleteModel( PlayerHandle ) ; DxLib_End( ); return 0; } 下記の管理人さん作成のサンプルが参考になると思います。 ttp://homepage2.nifty.com/natupaji/DxLib/program/dxprogram_3DAction.html
Re: 3DによるRPG ( No.4 )
名前:YH 日時:2010/01/07 12:39

いっちさん、ありがとうございます。 なんとかサンプルを見て、3Dの概念を理解しました。 本当に助かりましたm(_ _)m

Page: 1 |