忍者ブログ

ゲーム作るさ-GameMaker

ゲーム作りの日記。ゲーム作りに役に立つ記事を書いて行きます。 ゲーム作りに使用するのは主にGameMakerとGameMaker Studioです。

製作メモ 円運動

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

製作メモ 円運動



どもも。つっきーです。
今回は円運動についてです。

円運動と言えば三角関数ですが僕は三角関数とかそれ以前に数学が苦手です。
しかし、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 × π × 半径

なのでこうなります
c = 2 * pi * r

※ pi というのはGMの定数です。( 3.1415...)

それを円運動させるときの初期値と合体させてあげればできます。

ox =  中心点のX座標
oy = 中心点のY座標
dir = 初期角度
len = 半径
t = 一周にかかる時間

// 円周
c = 2 * pi * len

// 速度
spd = c / t

と、こんな感じになります。
そんでもって後はstepイベントに円運動の公式を入れてあげれば完成です。

これを使えばマリオの回るファイヤーバーとか作れそうですねw



と、以上円運動の解説でした。










拍手

PR

コメント

プロフィール

HN:
つっきー@月筒木
性別:
非公開
趣味:
ゲーム作り
自己紹介:
ごろりんとゲーム作ってます

P R