ページ 11

龍神録のボスのところなのですが

Posted: 2013年11月15日(金) 19:02
by sql
現在こちらの龍神録を見ながら勉強をしているのですが、ボスのところで聞きたいことがあります。
自分は高校で物理ではなく化学をとっているので皆様の助言を借りたいと投稿しました。
この章の始めにある物理計算なのですが、実装してみるとキレイに減速して止まってくれます、しかし、自分の今作りたいと思っているゲームは別に減速はする必要はありません、ですので、この章の

コード:

void calc_phy(){
        boss.x=boss.phy.prex-((boss.phy.v0x*t)-0.5*boss.phy.ax*t*t);//現在いるべきx座標計算
        boss.y=boss.phy.prey-((boss.phy.v0y*t)-0.5*boss.phy.ay*t*t);//現在いるべきy座標計算
        boss.phy.cnt++;
}
の部分の式を減速なしverに書き換えて、その仕組みも教えてください。
「みはじの計算」でもいいと思うのですが、こちら(物理式)だと、移動にかける時間を変更するだけで速度も変わってくれますし、物理の勉強にもなるとおもうので

お願いいます。

Re: 龍神録のボスのところなのですが

Posted: 2013年11月15日(金) 21:37
by みけCAT
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で割ってごまかします。

Re: 龍神録のボスのところなのですが

Posted: 2013年11月16日(土) 00:04
by sql
わかりやすくありがとうございます