なんとなくゲームでのcos、sinの使い方が
わかってきたのであるサンプルプログラムを作っております。
開発環境はC++、DXLibになります。
2点間の角度を求め、指定されてポイントに特定のフレーム数で移動するといった少しややこしい形を目指しております。
Object.Px、Py・・・現在のポジション
Sx、Sy・・・スタート地点の座標
Tx、Ty・・・目標地点の座標
なんとなく近い所までいっていると思うのですが、
Tx、Tyの座標によってはそれぞれ定義されたフレーム数で移動してくれません。。。
新参者で恐縮ですが、どなたかアドバイスを頂けないでしょうか。
#define CHARACTER_ANIME_FRAME 30
float angle = atan2((float)(this->Ty-this->Sy),(float)(this->Tx-this->Sx));
float diffX = this->Tx - this->Sx;
float diffY = this->Ty - this->Sy;
float Mx = cos(angle) * float( diffX / CHARACTER_ANIME_FRAME ) * 1.0f;//CHARACTER_MOVE_SPEED;
float My = sin(angle) * float( diffY / CHARACTER_ANIME_FRAME ) * 1.0f;//CHARACTER_MOVE_SPEED;
// Xの移動
if( this->Tx > this->Sx ){
this->Object.Px += Mx;
if( this->Object.Px >= this->Tx ) this->Object.Px = this->Tx;
}
/*
if( this->Tx < this->Sx ){
this->Object.Px -= Mx;
if( this->Object.Px <= this->Tx ) this->Object.Px = this->Tx;
}*/
// Yの移動(TxはSxより必ず下にあるものとする)
if( this->Object.Py < this->Ty ){
this->Object.Py += My;
}else{
this->Object.Py = this->Ty;
}