input_phyも書き換えた方がわかりやすいと思います。
コード:
//物理的計算をさせる登録をする(指定時間tで定位置に戻す)
void input_phy(int t){//t=
移動にかける時間
doubleymax_x,ymax_y;if(t==0)t=1;
boss.phy.flag=1;//登録オン
boss.phy.cnt=0;//カウンタ初期化
boss.phy.set_t=t;//移動にかける時間をセット
ymax_x=boss.x-BOSS_POS_X;//移動したい水平距離
boss.phy.v0x=ymax_x/t;//水平成分の初速度
boss.phy.ax =0;//水平成分の加速度
boss.phy.prex=boss.x;//初期x座標
ymax_y=boss.y-BOSS_POS_Y;//移動したい鉛直距離
boss.phy.v0y=ymax_y/t;//鉛直成分の初速度
boss.phy.ay =0;//鉛直成分の加速度
boss.phy.prey=boss.y;//初期y座標
}
//物理的キャラクタ移動計算
void calc_phy(){
double t=boss.phy.cnt;
boss.x=boss.phy.prex-(boss.phy.v0x*t);//現在いるべきx座標計算
boss.y=boss.phy.prey-(boss.phy.v0y*t);//現在いるべきy座標計算
boss.phy.cnt++;
}
指定された部分のみの書き換えで無理矢理対応するのでしたら、
コード:
void calc_phy(){
double t=boss.phy.cnt;
boss.x=boss.phy.prex-(boss.phy.v0x/2.0*t);//現在いるべきx座標計算
boss.y=boss.phy.prey-(boss.phy.v0y/2.0*t);//現在いるべきy座標計算
boss.phy.cnt++;
}
で動くと思います。(どちらも未検証です)
減速しないので、加速度を0に設定します。
そうすると、式の後半の加速度の計算はどうせ意味ないので削ります。
この時、t単位時間かけて等速で指定された変位を移動したいので、速度は「指定された変位/t」となります。
指定された部分以外を書き換えてはいけない場合、初速度として2*変位/tが指定されているので、
計算するときに2で割ってごまかします。