CBezier::Get関数の戻り値が、途中で減って(のちにまた増加して1.0までいく)場合があります。
数字は例えですが、0.1 0.2 0.3 0.4 0.5 0.6 0.5 0.4 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0のような動きです。
特に終わりの動きを急にするパターン(eRapid_Lv3~5)でこの事象が発生します。
以下のソースはサンプルプログラムのうち、Get関数のパラメータだけ変えたものです。
#include "DxLib.h"
#include "Bezier.h"
#define X 20
#define W 500
#define T 150 //時間(フレーム数)
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK );
CBezier Bez;
int t=0,Img = LoadGraph("画像/キャラクタ01.png");
SetDrawMode( DX_DRAWMODE_BILINEAR );
while( ScreenFlip()==0 && ProcessMessage()==0 ){
DrawGraphF( X+Bez.Get( CBezier::eNoAccel, CBezier::eNoAccel, (float)t/T )*W, 50, Img, TRUE );//等速 問題なし
DrawGraphF( X+Bez.Get( CBezier::eNoAccel, CBezier::eRapid_Lv3, (float)t/T )*W, 150, Img, TRUE );//
DrawGraphF( X+Bez.Get( CBezier::eRapid_Lv1, CBezier::eRapid_Lv5, (float)t/T )*W, 250, Img, TRUE );//
DrawGraphF( X+Bez.Get( CBezier::eRapid_Lv3, CBezier::eRapid_Lv4, (float)t/T )*W, 350, Img, TRUE );//
if(t<T){
t ++;
} else {
continue;
}
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
上記ソースの実行結果ですが、画像(X座標)が最初は右に向かって進みますが、途中で左に向かって進み始め、しばらくするとまた右にという動きです。
もしこういうものならば仕方ないのですが…ちょっと意図した動きと違うのでできましたら一度確認して頂ければ助かります。
ベジェ曲線がまだよく理解できず、サンプルプログラムをそのまま使わせてもらっています。もし修正可能であればお願いします。