聖剣伝○風メニュー

”聖剣伝○風の自作メニュー”です。
ちょっとイベントが長いので、解説は簡単にしちゃいます。

ピクチャーの移動では、縦,横,斜めの移動が基本ですけど
これを組み合わせることによって、擬似的に円を描いて移動させています。
応用すれば、楕円軌道を回転させたり、渦巻きや螺旋運動をさせることが出来ます。

ここでは三角関数表を使って、x,yをr,θの極座標系で計算しています。
(ここは、高校数学を知らないとキツイかも)

基本的には、rとθを媒介変数として以下の計算をしているだけです。
 x=rcosθ
 y=rsinθ

三角関数表には、(0°≦θ≦90°)の範囲しか載っていませんが
(90°≦θ≦180°)
(180°≦θ≦270°)
(270°≦θ≦360°)
この3パターンと、θ±360°の一般角には、それぞれ公式があったので
それを使って、(0°≦θ≦90°)の範囲のみでcosθ,sinθを網羅します。

あと、楕円軌道への応用としては
 x=acosθ,y=bsinθ
こうするだけでOKです。(a,bは違う値で。a=bなら円になります)

また、x=rcosθ,y=rsinθ のもとで
渦巻き運動は、rを段々小さく(大きく)して行くことで
螺旋運動は、xないしyをピクチャー移動のたびに
定数を加算していくことで設定できます。

それで、イベントの作り方ですが…
まず、コモンイベントに、三角関数表のデータを入力します。
(数値は、三角関数表で確認して下さい)
1°ずつ入力するのが理想ですが、(1°ずつ回転させると、正360角形の周を回転)
それほど精密にやらなくても、ちゃんと円軌道で回転するように見えますので
面倒な場合は一定間隔で数値を入力していきます。
(サンプルでは18°刻みで代入しています…正20角形の周を回転)
ここで、入力する上でのポイントは、cosθ,sinθを
何桁まで表示させるかです。(有効数字の概念)
また、ツクールでは整数値しか代入出来ませんので
予め(10^n)倍にして、整数値にしておきます。(nは有効数字の桁数)
このサンプルでは有効数字4桁で計算しています。
この場合、rが自動的に2桁までに制限されますが
3桁まで使いたい場合は、cosθ,sinθを有効数字3桁にして下さい。
(RPGツクール2000では6桁までしか計算出来ません)


具体的には、以下のようなやり方です。


☆コモンイベント:三角関数表;呼び出されたときのみ

イベントの始めに、θが0°〜90°以外の場合の設定を行います。
これは、三角関数の公式とあわせて確認して下さい。

◆条件分岐:変数1(θの値)が0
 ◆変数操作:変数2(10000cosθ)に代入,10000
 ◆変数操作:変数3(10000sinθ)に代入,0
◆分岐終了:
◆条件分岐:変数1(θの値)が1
 ◆変数操作:変数2(10000cosθ)に代入,9998
 ◆変数操作:変数3(10000sinθ)に代入,175
◆分岐終了:
◆条件分岐:変数1(θの値)が2
 ◆変数操作:変数2(10000cosθ)に代入,9994
 ◆変数操作:変数3(10000sinθ)に代入,349
◆分岐終了:



◆条件分岐:変数1(θの値)が90
 ◆変数操作:変数2(10000cosθ)に代入,0
 ◆変数操作:変数3(10000sinθ)に代入,10000
◆分岐終了:

イベントの終わりもθが0°〜90°以外の場合の設定です。

→イベントここまで


次に、中心座標からの半径rと、ピクチャーの回転角θを決めたら
座標の値(画面X,画面Y)へ変換してくれるコモンイベントを作成します。


☆コモンイベント:数値代入;呼び出されたときのみ

主人公の画面Xと画面Yを取得して、”基準値X,Y”として変数4,5に代入。
次に、ピクチャーを表示する画面X,Yを、表示する個数分だけ作成します。

それぞれの場合で、回転角θを決めて”三角関数表”を呼び出します。
そして得られた値を代入します。(画面X,Yに変数2,3を代入)
変数2と3をrで乗算。そののち10000(10^n)で除算して実際の値へ。

これを表示する枚数分繰り返した後、基準値X,Yをそれぞれの変数へ加算。
→以上です。


以上のコモンを用いて、自作メニュー画面を作ります。
予めデフォルトのメニューを消した上で、キャンセルキーが
押されたときに、自動でピクチャーを表示します。


上のコモンイベントで算出された数をもとにして、ピクチャーを画面に表示します。
(ここまでで、ピクチャーの表示が終わりです)
更に、方向キーが押されたとき、θに定数を加算して
再び数値代入イベントを呼び出して、ピクチャーを移動させます。
ここで初めてピクチャーが円形に動いてくれます。

あとは、サンプルのコモンイベントを確認して下さい。

ちなみにサンプルはこちら
→ http://www5b.biglobe.ne.jp/~cff/chkf/data/c_menu.lzh