3Dモデル移動
Posted: 2011年3月31日(木) 01:00
3Dモデルがキーを離すと元に戻ってしまいます。
どうしたらいいか教えてください。
必ずcodeタグを使用してくださいね。詳しくは、フォーラムルールの確認を。 by softya(ソフト屋)
どうしたらいいか教えてください。
必ずcodeタグを使用してくださいね。詳しくは、フォーラムルールの確認を。 by softya(ソフト屋)
#include "DXLib.h"
int Key[256];
VECTOR Vect1, Vect2 ;
typedef struct{
int right;
int left;
}flag_t;
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
else GetHitKeyStateAll_InputKey[i]=0;
}
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
int ModelHandle ;
flag_t flag;
// 3Dモデルの読み込み
ModelHandle = MV1LoadModel( "date/にとりー.mqo" ) ;
flag.left=0;
flag.right=0;
// Vect1 と Vect2 に値を代入
Vect1 = VGet( 100.0f, 200.0f, 500.0f ) ;
Vect2 = VGet( 90.0f, 0.0f, 0.0f ) ;
if (Key[KEY_INPUT_LEFT]>0){
flag.left=1;
}
if(Key[KEY_INPUT_RIGHT]>0){
flag.right=1;
}
if (flag.left>0){
Vect1 = VSub( Vect1, Vect2 ) ;
}
if (flag.right>0){
Vect1 = VAdd( Vect1,Vect2);
}
// Vect1 の内容を画面に表示
DrawFormatString( 0, 0, GetColor( 255,255,255 ), "Vect1 x=%f y=%f z=%f", Vect1.x, Vect1.y, Vect1.z ) ;
// 画面に映る位置に3Dモデルを移動
MV1SetPosition( ModelHandle, Vect1 ) ;
// 3Dモデルの描画
MV1DrawModel( ModelHandle ) ;
ScreenFlip();
}
DxLib_End();
return 0;
}