複雑な動作を要しない限り、SketchyPhysicsのツールバーに表示されている機能だけで殆ど事足りてしまうが、少し踏み込んで 「SketchyPhysicsWiki」の中を除くと、更に便利な使い方が紹介されている。
僅か、10行にも満たないスクリプトを記述するだけで、”更に便利”な使い方ができるなら使わない手は無い。
今回は、最も身近と感じられる
「getVar」と、「setVar」の二つのスクリプトを用い、手抜きの代名詞となった、「観音扉」で試してみた。
設定は、以下の通り
扉の軸としてセットする「Servo」の「Controller」に、値を取得するため、
getVar("tobira01")
と記述する。
※通常は、軸を設定した段階で”slider('servo???')”が既定値としてセットされてくるので、これを上記に書き換える。
カッコ内の "tobira01" は、自分が識別し易い任意の名前を付けられるが、「getVar」は、「Servo」などのジョイントツールから値を取得するための決まりのスクリプト。(決まりなので、考える必要はなくただ記述するのみ。)
他の設定で、
「accel」と、「damp」の設定は割と重要で、
オブジェクトを動かす力や早さは「accel」で設定し、それに抵抗を加えるのが「damp」の役割と言ったところ。
「damp」の設定値を高くすると、扉の開閉をゆっくりと動かす事ができる。
後は、動かされる方のオブジェクトに、アクションに応じた数行のスクリプトを記述するだけ。
下は、マウスのクリックイベントを用いた一般的な記述。
(観音扉の場合、対称に動く2つの扉にどちらも同じスクリプトを記述する)
onclick{
if getVar("tobira01")==0.0
setVar("tobira01",1.0)
else
setVar("tobira01",0.0)
end
}
「Inspector」のダイアログ 最下部に表示されているスクリプトのチェックボックスにチェックを入れると、テキストボックスが現れるので、上のスクリプトをコピペして貼り付けるだけで良い。
たったこれだけで動作する。
※ヘルプや参考が必要無い場合、「SP Wiki」をクリックしなくても他の空白をクリックしてもテキストボックスは表示される
「Servo」のジョイントが邪魔な時は、レイヤの「SketchyPhysics」のチェックを外すと非表示にできる。
添付ファイル
|