今回は敵を円運動させる方法を解説します。
円運動には三角関数を使います。下の図を見てください。
青い点を中心とした半径Rの円周をグルグル回る赤い点を考えます。
まず中心の座標を(cx,cy)とします。
さらに青い点と赤い点を結ぶ線と、緑色の線とのなす角をθとすれば、
赤い点の座標は、
x = R * cos(θ) + cx
y = R * sin(θ) + cy
で表されます。
ソースですが、注意があります。
変数を実数として扱う必要があります。
そうしないと小数点以下が切り捨てられて正常に動かない場合があります。
変数を実数として扱うには必ず小数点をつけてください。
例:r = 100 ではなく r = 100.0
θ(下のソースでは変数a)の単位はラジアン(rad)です。
度数法の 360°= 2πラジアン(πは円周率)
2π≒ 2 * 3.14 = 6.28 なので、aが6.28増えるごとに物体は一周し元の位置に戻ります。(誤差が出るので注意)
角速度はaが増える速度のことです。
screen 0,400,400 font "MSゴシック",48 //円運動の情報 a = 0.0 //初期位置 r = 100.0 //回転半径 v = 0.05 //角速度 cx = 180 //円運動の中心 X cy = 180 //円運動の中心 Y *main color 0,0,0 : boxf 0,0,400,400 //円運動の中心 color 255,0,0 pos cx,cy mes "★" x = r * cos(a) + cx y = r * sin(a) + cy a += v //円運動する物体 color 255,255,255 pos x,y mes "●" line cx+24,cy+24,x+24,y+24 //動きがわかりやすいように、線を表示 redraw 1 : wait 1 : redraw 0 goto *main
変数vやrをいろいろいじって実験してみるとおもしろいかも。