ホームへ戻る

 3d.03 モデルを動かしてみよう

 3d.01章のモデルを動かせるようにしてみましょう。

実行結果


Xを押すとXが増加、左シフトを押しながらXを押すとXが減少
Yを押すとYが増加、左シフトを押しながらYを押すとYが減少
Zを押すとZが増加、左シフトを押しながらZを押すとZが減少

という操作を受け付けます。
モデルの位置をセットするには
MV1SetPosition( ModelHandle, VGet( x, y, z ) ) ;
を利用します。
今回新しく使っている関数はこれだけです。
以下のサンプルを見てみましょう。


/***** main.cpp *****/

#include <DxLib.h>

int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
    ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );

    float x=0, y=0, z=0;

    //3Dモデルの読み込み
    int ModelHandle = MV1LoadModel( "dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ;

    //奥行0.1~1000までをカメラの描画範囲とする
    SetCameraNearFar( 0.1f, 1000.0f ) ;

    //(0,10,-20)の視点から(0,10,0)のターゲットを見る角度にカメラを設置
    SetCameraPositionAndTarget_UpVecY( VGet( 0, 10, -20 ), VGet( 0.0f, 10.0f, 0.0f ) ) ;

    while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){

        if(CheckHitKey(KEY_INPUT_X)){//Xキーが押されていたら
            if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら
                x+=0.1f;
            } else {
                x-=0.1f;
            }
        }
        if(CheckHitKey(KEY_INPUT_Y)){//Yキーが押されていたら
            if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら
                y+=0.1f;
            } else {
                y-=0.1f;
            }
        }
        if(CheckHitKey(KEY_INPUT_Z)){//Zキーが押されていたら
            if(CheckHitKey(KEY_INPUT_LSHIFT)){//左シフトキーが押されていたら
                z+=0.1f;
            } else {
                z-=0.1f;
            }
        }

        // 指定位置にモデルを配置
        MV1SetPosition( ModelHandle, VGet( x, y, z ) ) ;

        // 3Dモデルの描画
        MV1DrawModel( ModelHandle ) ;

        DrawFormatString(0,0,GetColor(255,255,255),"x=%.1f y=%.1f z=%.1f",x,y,z);

    }

    DxLib_End();
    return 0;
}  


実際に操作してみてください。
実行結果のように動けば成功です。

→分からないことがあれば掲示板で質問して下さい


- Remical Soft -