どもも。つっきーです。
今回は円運動についてです。
円運動と言えば三角関数ですが僕は三角関数とかそれ以前に数学が苦手です。
しかし、GMはそんな人でもある程度簡単に製作できるようになってます。
じゃぁ三角関数使わないでどうやって円運動させるのか。
んで今回役に立つのがこれ。
lengthdir_x(len,dir)
lengthdir_y(len,dir)
使い方は
製作メモ 座標と角度と距離にて解説してます。
なんとこんな便利なものがあるとは…(最近知った)
んでこれの角度の部分を増やしていくコードを書けば完成です。
公式の解説
公式に直すとこうなります。
x = ox + lengthdir_x( len,dir )
y = oy + lengthdir_y( len,dir )
dirが角度lenが半径(ox,oy)が中心点になります。
解説
lengthdir_x( len,dir )
lengthdir_y( len,dir )
lenが距離、dirが角度
これでx軸とy軸がどこになるのかを調べます。
↓
それで回したい場所の中心座標(ox,oy)にそれぞれ足します。
ox + lengthdir_x( len,dir )
oy + lengthdir_y( len,dir )
それをx,yに入れてるだけですね。
x = ox + lengthdir_x( len,dir )
y = oy + lengthdir_y( len,dir )
しかしこれだけだと、lenとdirに値を入れても回ってはくれません。
回す場合はdirに好きな値を足していけばいいわけです。
例 ステップイベントにいれます。
x = ox + lengthdir_x( len,dir )
y = oy + lengthdir_y( len,dir )
dir += spd
spdは周る速度
dir += 周る速度
で角度を加算していけば周ります。
lenを加算していくと半径が増えます。
dirだけ加算すると周っていって
lenだけ加算すると指定した角度に進んで行きます
両方加算していくとだんだん広がっていく円ができますね。
ということは円運動意外にも使い道はたくさんあるということが分かります。
使い方
Createイベントに
ox = 中心点のX座標
oy = 中心点のY座標
dir = 初期角度
len = 半径
spd = 回る速度
Stepイベントに
x = ox + lengthdir_x( len,dir )
y = oy + lengthdir_y( len,dir )
dir += spd
と記述すれば円運動させることができます。
補足。
周る速度について
例えば半径の違う円がそれぞれあったとして1周の速度を同じにしたい場合。
これはこの間書いた記事のこれを使えばできます。
※ 詳細
公式メモ 時間・距離・速度
s = r/ t
s = 速度
r = 距離
t = 時間
そしてrの部分に円周(距離)を入れてあげます。
円周を求める公式は
円周 = 2 × π × 半径
なのでこうなります
= 2 * pi * r
※ pi というのはGMの定数です。( 3.1415...)
それを円運動させるときの初期値と合体させてあげればできます。
ox = 中心点のX座標
oy = 中心点のY座標
dir = 初期角度
len = 半径
t = 一周にかかる時間
// 円周
c = 2 *
pi * len
// 速度
spd = c / t
と、こんな感じになります。
そんでもって後はstepイベントに円運動の公式を入れてあげれば完成です。
これを使えばマリオの回るファイヤーバーとか作れそうですねw
と、以上円運動の解説でした。