只今、龍神録を応用してグラディウス的
横スクロールシューティングを
作っているのですが…
49章に出てくるオプションの動きが
どうにもグラディウスのアシスト機の
ような自機の後をついてくる
(金魚の糞的な動き?)
動きをしてくれません;;
opion_bb.x=ch.x等の後にどのような
式を付ければ上記のような動きをするのか
分かる方が居られましたら、ご教授いただけたら
幸いです。
グラディウスのアシスト機
Re:グラディウスのアシスト機
自機の移動した後をついていく動作であれば、自機の位置を配列として記録し、
オプションの位置はその記録した位置配列を参照して設定すればOKです。
具体的には、下記のような疑似コードになります。
ただし、これは1個だけなので、複数個の場合は必要な分だけ(配列を長くして)座標を記録し、
最新の座標からオプションごとに固定値ずつ前の座標値を取っていけば良いでしょう。
(1つめのオプションは最新座標から 10 フレーム前、 2つめのオプションは最新座標から 20 フレーム前…というように)
ちなみに、オプションを自機の移動に遅延した動き(リアルタイムに移動する挙動)にするなら、
単に上記のif文を取り除くだけで出来ます。
オプションの位置はその記録した位置配列を参照して設定すればOKです。
具体的には、下記のような疑似コードになります。
// ary はXとYの位置を記録する10個の配列 // now は次に自機の位置(=一番古い座標)が格納される ary 用の添字値 if(自機が移動されたか){ // オプションに ary 配列の一番古い値をセット オプションのX位置 = ary[now].x; オプションのY位置 = ary[now].y; // 現在の自機の座標をセット ary[now].x = 自機のX座標; ary[now].y = 自機のY座標; now = (now + 1) % 10; // now 値を次に移動 }この方法では、 自機の10フレーム(リアルタイムではない)前の移動した座標にオプションが動きます。
ただし、これは1個だけなので、複数個の場合は必要な分だけ(配列を長くして)座標を記録し、
最新の座標からオプションごとに固定値ずつ前の座標値を取っていけば良いでしょう。
(1つめのオプションは最新座標から 10 フレーム前、 2つめのオプションは最新座標から 20 フレーム前…というように)
ちなみに、オプションを自機の移動に遅延した動き(リアルタイムに移動する挙動)にするなら、
単に上記のif文を取り除くだけで出来ます。