初めての投稿です。
よろしくおねがいします。
メタセコで作った地球を回転させようと思うのですが、何秒間に回転させるやりかたがわからなくて・・・
今できてるものは回転はしますが、速度を変えれるだけです。
どうすれば、時間どうり回転するのでしょうか・・・
//------------------
//基本プログラム
//------------------
#include "DxLib.h"
int Screen=0;
bool changeScreen = true;
const int MAIN_SCREEN = 0;
const bool FULL_SCREEN = false ;
int hModel; //地球モデル
void Initialize();
void MainScreen();
bool IsScreenChanged();
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow )
{
Initialize();
while (SUCCEEDED( mL.MessageProcess()))
{
switch(Screen){
case MAIN_SCREEN:
MainScreen();
break;
}
}
return(0);
}
//----------------
//3Dの初期化およびデータの読み込み
//----------------
void Initialize()
{
mL.SetFullScreenEnable( FULL_SCREEN);
if( !FULL_SCREEN )
{
mL.SetWindowSize(800,600);
mL.SetWindowTitle( _T("テストプログラム"));
}
if( FAILED( mL.Init() )) //ライブラリの初期化処理
mL.Exit();
//---------------
mL.SetCamera(VECTOR3(0,5,-15),VECTOR3(0,0,0)); //回転
hModel = mL.LoadModel(_T("data/x/"),_T("tikyu.x"));
//---------------
}
//----------------------
//プログラムのメイン処理
//----------------------
void MainScreen()
{
if( IsScreenChanged() )
{
}
mL.AdjustFPS( 60 ); //FPSの調節
mL.CLS(); //グラフィック画面の消去
mL.DrawFPS(); //FPSの表示
mL.DrawCameraPoint(10,10); //カメラの位置表示
mL.SetDebugMouseEnable( true ); //テスト用のマウス操作を有効化
//---------------------
{
static float DomeDeg = 0 ; DomeDeg += 1;
if(DomeDeg > 360)DomeDeg=0;
mL.DrawModel(hModel, VECTOR3(0,0,0),VECTOR3(0 ,DomeDeg,0) , 4);
}
//---------------------
mL.ScreenFlip(); //裏画面を表画面に描画
}
//-------------------------
//画面切り替え直後か判定
//-------------------------
bool IsScreenChanged()
{
bool change = changeScreen;
changeScreen = false;
return(change);
}
地球を2秒で1回転(正確に)させたいのですが・・・
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 地球を2秒で1回転(正確に)させたいのですが・・・
実際に一回のループにかかった時間から、2秒で360度回転する角速度を求めれば良いです。
式で書くと、
360.0 * 一回のループにかかった時間(ms単位) / 2000.0
が回転角となります。これをDomeDegに足してください。
あと360度をオーバー時の処理は、
if(DomeDeg > 360)DomeDeg-=360;
としてください。
式で書くと、
360.0 * 一回のループにかかった時間(ms単位) / 2000.0
が回転角となります。これをDomeDegに足してください。
あと360度をオーバー時の処理は、
if(DomeDeg > 360)DomeDeg-=360;
としてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 地球を2秒で1回転(正確に)させたいのですが・・・
質問内容とは直接関係ないですが、もう配布が終了している古いライブラリを使うより、
本家のDXライブラリを使ったほうがサポートも受けやすいと思います。
本家のDXライブラリを使ったほうがサポートも受けやすいと思います。