Anarkのビヘイビアを自作してみよう!まともにプログラミング言語を勉強したことがない僕が無謀にも 挑戦するという身の程知らずなページです。 DirectorにRingoというスクリプト言語があるように、 AnarkにもJScript(俗にいうジャバ・スクリプト)というスクリプト言語で 色々制御できる仕掛けが用意されていて、今回はそれを使って遊んでみようという訳なのです。 第1回からずいぶんご無沙汰してしまい、企画倒れがささやかれたかもしれませんが、 単に僕の怠慢が招いた事態なので安心(?)して下さい。すみません。すみません。(汗 第2回 式を使った移動前回はスクリプトでオブジェクトを回転させてみましたが、今回は移動させてみましょう。 前回の例により、オブジェクトの動作が式で制御できることがわかりました。 これによって、式次第で、手付けでは難しい動作も可能になります。 前回は回転でしたが、ほぼ同じ書き方で横にも縦にも奥にも移動ができます。 では早速、X座標、Y座標、Z座標を同時に変化させて、斜めの移動をしてみましょう。 スクリプトの書き方は前回を参考にしてください。
スクリプトは次のようになっています。
function onUpdate(){
parent.position.x += 1;
parent.position.y += 1;
parent.position.z += 1;
}
各文の意味や役割は前回と殆ど同じです。今回は、式のみが異なっています。 しかし、この程度の移動はキーフレームで作ったほうが早いので、わざわざスクリプトでやる必要はないと思います。 というわけで、次はスクリプトならではの動きをやってみましょう。
といっても実は僕もまだまだ全然わかっていないので、とりあえず、円の軌跡にそって動かしてみましょう。
これを作るために必要なのがsin関数とcos関数です。 実はMakeRingビヘイビアを参考にしたのですが (これに関しては次回以降で)、 超久々に高校の教科書を取り出してみると、 円の運動はsinとcosによって書き換えることができるそうです。
「この程度のプログラムにこんなグラフ持ち出して( ´,_ゝ`)プッ」という方がいらっしゃるかも知れませんが、馬鹿なので勘弁してください・・・。 sinはおおまかに、 1 -> 0 -> -1 -> 0 -> 1 という流れで、 これらをそれぞれ、縦(Y軸方向)と横(X軸方向)の動きに割り当てることで半径1の円に沿った動きができます。スクリプトは次のとおり。 function onAttach(){
n = 0;
}
function onUpdate(){
n+=1;
parent.position.x = 150 * Math.sin(n*2*Math.PI/(5*30));
parent.position.y = 150 * Math.cos(n*2*Math.PI/(5*30));
}
onAttach関数では、次のonUpdate関数で使う変数nを初期化しています。これは、このようにしておかないと、いきなりonUpdate関数の中でn+=1;としてもエラーがでるからです。 左のRotatorビヘイビアでは一周を5秒に設定したので、2*PI(一周)を5で割るのですが、onUpdate関数は1秒ごとに描画するのではないので、とりあえず1秒あたりの最高のフレームレートである30フレームで更に割ってみました。ちなみにAnarkは環境に応じてフレームレートを変えるのでこれでは処理内容によって回転が速くなったり遅くなったり、また、マシンごとに動作の速度が変わってしまいます。この問題も次回以降で挑戦してみたいと思います(挑戦とはいっても既存のありがたいビヘイビアを参考にするのですが・・・)。 ちなみに周期を変えることで軌道を変えることができます。色々試してみてください。(引数に1/4*Math.PIを足す等) というわけで、今回の内容はどうだったでしょうか。前回の内容が基本の全てだと思うので、 お疲れ様でした! 今回使用したプロジェクトファイル: move_circle01.amw move_circle02.amw move_xyz.amw |
EYES JAPAN Web3D Project > Anarkのビヘイビアを自作してみよう!




コメントする