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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sql

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

#1

投稿記事 by sql » 12年前

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

コード:

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に書き換えて、その仕組みも教えてください。
「みはじの計算」でもいいと思うのですが、こちら(物理式)だと、移動にかける時間を変更するだけで速度も変わってくれますし、物理の勉強にもなるとおもうので

お願いいます。

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

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

#2

投稿記事 by みけCAT » 12年前

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で割ってごまかします。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

sql

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

#3

投稿記事 by sql » 12年前

わかりやすくありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る