キャラクターを中心にカメラが回転するプログラムを作っています。
まずはxz座標上においてそうなるように試みたのですが、カメラが動く気配は全くありません。どこで間違っているのでしょうか?
#include "DxLib.h"
#include <math.h>
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
int ModelHandle ;
VECTOR CameraPos ;
float Roll=0.0f;
// DXライブラリの初期化
if( DxLib_Init() < 0 )
{
// エラーが発生したら直ちに終了
return -1 ;
}
ChangeWindowMode(TRUE);
// モデルの読み込み
ModelHandle = MV1LoadModel( "SimpleModel.mqo" ) ;
// 描画先を裏画面にする
SetDrawScreen( DX_SCREEN_BACK ) ;
// カメラの座標を初期化
CameraPos.x = 800.0f * sin(Roll) ;
CameraPos.y = 0.0f ;
CameraPos.z = -800.0f * cos(Roll);
// ESCキーが押されるかウインドウが閉じられるまでループ
while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 )
{
// 画面をクリア
ClearDrawScreen() ;
// 方向キーでカメラの座標を移動
if( CheckHitKey( KEY_INPUT_LEFT ) == 1 )
{
Roll -= PHI_F / 60.0f ;
}
if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 )
{
Roll += PHI_F / 60.0f ;
}
// カメラの位置と注視点をセット、注視点は原点
SetCameraPositionAndTarget_UpVecY( CameraPos, VGet( 0.0f, 0.0f, 0.0f ) ) ;
// モデルの描画
MV1DrawModel( ModelHandle ) ;
// 裏画面の内容を表画面に反映
ScreenFlip() ;
}
// DXライブラリの後始末
DxLib_End() ;
// ソフトの終了
return 0 ;
}
三角関数を使ってxy座標においてカメラが原点を中心に円を描くように動くように試みています。y軸方向は今回は考えておりません。