アットウィキロゴ

応用ギミック集

注意:基本ギミックを理解していることを前提に説明します。
そのまま設定すれば、誰でも使えるサンプルも書くので、面倒なら説明は飛ばしてください。


■簡易エレベーター その1(難易度D、重要度A)(2012/05/26)
設定例:
インターバルトリガー(間隔1)
オブジェクト位置イベント(ローカルにチェック、Y座標がカーブデータソースを参照、金属プレートをターゲット)
カーブデータソース(開始0、終了10、長さ180、ループ中と後半を反転にチェック)

解説:
エレベーターの再現にはいろいろな方法がありますが、その一例です。
金属プレートが180フレーム(3秒)毎に上下します。
このままでは実用的ではないので、バイクが一定位置にきたらエリアトリガーで始動させたり、エリアトリガーと状態イベントと遅延フィルターで上についたら一時停止とか、状況にあわせて調整が必要です。
というかエレベーター本体を作りましょう・・・

■簡易エレベーター その2(難易度C、重要度B)(2012/05/26)
設定例:
インターバルトリガー(間隔1)
数値設定イベント上(増加、値:右下の変数データソースを参照、ターゲット:左の変数データソース)
オブジェクト位置イベント(ローカルにチェック、Y座標が2入力オペを参照、金属プレートをターゲット)

エリアトリガー*2(プレートを上下挟んで2つ、接触後無効化:OFF、トリガー元:動的オブジェ、接触時:数値設定イベント下をターゲット)
変数データソース右下(初期値:1)
数値設定イベント下(乗算、値:-1、ターゲット:右の変数データソース)
金属プレート(物理法則:ON)

変数データソース左(初期値:0)
2入力オペレーター(除算、演算値1:すぐ上の変数データソース、演算値2:10)

解説:
金属プレートがエリアトリガーに引っかかるごとに右下の変数データソースの値が1か-1に切り替わります。
この値をY座標(高さ)に足し続けることで、プレートが上下します。
直接1や-1を足すと速度が速すぎるため、調整のために2入力オペレーターで10で割った値を参照しています。

その1に比べてやや複雑ですが、座標指定で上下させるよりも、トリガーの位置で上下させたほうが後の調整は簡単になります。

■エレベーター 物理ジョイントのスライダーを使う方法(2012/05/30)
サンプルにエレベーター(上下)があるので解説だけします。
仕組みは簡易エレベーターその1とほとんど同じで、位置イベントの代わりに直線モーターの速度がカーブデーターソースを参照しています。
速度がマイナスになると下に下がるのも、簡易エレベーターと同じです。
改造するときは、直線モーターのフォースの調整に気をつけてください。
フォースが大きすぎると慣性っぽい力が働かず、いきなり最高速で動き出し、小さすぎるとそもそもパワー不足で動かなくなります。

■複雑なサンプル>フリッパー(繰り返し)を改造した振り子(難易度D、重要度C)(2012/05/30改訂版)
1.エリアトリガー、物理イベント、状態イベント、金属プレートを削除
2.フリッパーを回転させて先端を地面に向ける、物理法則をON
3.回転モーター>回転動作の設定 で「下限X:1」「上限X:0」に変更
4.カーブデータソース 有効をON、オフセットを0、後は好み(例 開始:-250、終了:250、長さ180)

解説:
回転モーターの角度制限はややっこしいので、下限Xの数値を上限Xの数値以上にすることで可動制限を無効にしています。
制限を無効にした場合、可動領域を示す軸の周囲の赤い扇が円形になります。
後はカーブデータソースで一定周期で回転モーターの向きを反対側にして、行ったり来たりさせています。
「長さ」か「終了」の値を大きくすれば(「開始」は終了の値×-1)振れ幅が大きくなり速度が遅くなります。
振れ幅と速度は試行錯誤で自分にあった数値を見つけてください。他にもエレベーターの例のように、左右両側をエリアトリガーで挟んで回転方向を変える方法もあります。


■オブジェクトの状態を数値設定イベントと変数データソースで管理(難易度D、重要度S)

■Aボタンで回転モーターをON/OFF
前提:
回転モーターを回す
ボタンを押してイベントを始める
状態を切り替える

■物体を移動させて一定時間ごとに元の位置から再移動させる
前提:
一定時間ごとにイベントを起動する
物体を移動させる


使用例:
自動車が何台も通っているように見せる、玉を一定時間ごとに転がす

■バイクに他のオブジェをくっつける


設定例:ダミーオブジェクトをくっつける
ダミーオブジェクトを配置 > 物理法則:ON 物理法則詳細 > 重力:OFF
物理ジョイントを配置 > プロパティ:詳細 ターゲット1にバイク、2にダミーオブジェを選択 衝突を無効化:ON
 回転動作の設定>下限X:0

解説:
バイクには「オブジェクトの結合」ができないのでプランBでいきます。
サンプルコースのBall of Steel Exampleがこの方法を使っています。
なお、バイクは複数パーツで構成されていて、間違ってタイヤとくっつけてしまうと回転してしまうので注意してください

使用例:
バイク本体にかごやスキーをくっつける。
相対位置取得用にダミーオブジェをくっつける(応用)


■ダミーオブジェクトを配置した方向へオブジェクトを直線運動させる(書きかけ)
設定:
1.始点に動かしたいオブジェクト(オブジェ1)、終点にダミーオブジェクト(オブジェ2)を配置
2.オブジェ1と2の座標を抜き出す(オブジェクト情報データソースをそれぞれxyzで計6枚)
3.各座標の差を出す。入力オペレーターでX2-X1、Y2-Y1、Z2-Z1を計算
4.3の差をオブジェ1と2の距離で割る 距離はオペレーション>距離オペレーターで計算可能
5.時間(経過フレーム数)を計測しておく インターバルトリガー、数値設定イベント(1ずつ増加)、変数データソース で可能
6.オブジェ1の初期位置を保存しておく 情報パネルから最初に書き出すか、始点位置にダミーオブジェを配置しておいてその座標を参照する
7.現在位置の座標 = 初期座標 + 任意の速度(変数パネルに設定しておく) * 時間 * 4で出した座標ごとの値
8.算出した座標にオブジェ1を移動
9.終点にエリアトリガーを置くか時間を計算するかして、到着を判断する

利点:
始点と終点にオブジェクトを置くので、感覚的に分かりやすい。
XZ座標に対して斜め移動でも問題なし

欠点:
面倒・・・
直線のみ対応(ルートは計算式次第なので式が分かればいろいろ可能)
ルート中に速度などが変わると再計算が必要

解説:
現在位置 = 初期位置 + 速度 * 出発してからの時間 なので、それをXYZの各座標で計算しているだけです。
高さYは不要なら一定値で構いません。

応用:
複数のポイントを経由させてオートパイロット機能


■常にカメラの方向を向く板(ビルボード)
インパルス経路:
インターバルタイマー(常に起動) > オブジェクト位置イベント(ターゲット>ビルボードのパーツ)

設定その1(ビルボード側 カメラ+オブジェクト):
新規にカメラを配置 > 範囲:0.10m(最小) カメラの詳細設定>ターゲット:オブジェクト、ターゲットに撮影用カメラ(もしくはバイクなどその近くで連動している物体)を指定
パーツを設置(看板など) 重力:OFF
オブジェクト情報データソース を3枚設置、ターゲットをビルボード用カメラにして回転方向XYZをそれぞれ取得

設定その2(オブジェクトの角度を更新):
インターバルトリガー 間隔:1(最小) フィルターを「オブジェクト位置イベント」へ
オブジェクト位置イベント 位置の変更:OFF 向きの変更ON、ローカルOFF、向きの設定ON、ヨー、ピッチ、バンクでそれぞれYボタンを押して「オブジェクト情報データソース」の回転X、回転Y、回転Zを参照する。 ターゲットをオブジェクトにする。

解説:
要するにビルボード用カメラが自動で撮影用カメラの方向を向くのを利用して、その角度をビルボードと連動させているだけです。物理法則の働く距離でないとうまく作動しませんが、コースを作る場合の演出や障害物に利用できる可能性はあります。

注意:
物理演算の距離でしか動作は保障されません。
1つのパーツでしか機能しません。結合したオブジェクトで使用すると挙動がおかしくなります。
今の所技術的問題で、回転のみで移動は不可能です。

■オブジェクト結合されたパーツ群のビルボード
設定方法:
まず透明なビルボードを作っておいて、バイクと他のオブジェを結合する要領で、
回転ヒンジを使って

■カメラと相対位置を保つビルボード
開発苦戦中、これができるとなんちゃってHUD(計器)ができるわけですが・・・


■無線(?)連絡装置
バイクとライダーの火災状態はターゲット選択が無くても操作や参照が可能です。
これを利用して、「火災イベント(タイプ:代入)」で炎上量をいじっておき、離れた所で

インターバルトリガー>汎用フィルター(「ゲーム変数データソース(バイク炎上量)」を参照)

と、することでターゲットを指定しないでインパルスを送ることができます。
ただ、炎上量は0-1000までしかいじれないので送れる情報量がすくなかったり、接触トリガーを使えるならそちらの方が簡単だったり、送受信用のパネルが何枚か必要だったりと欠点も多いです。

タグ:

+ タグ編集
  • タグ:
最終更新:2012年05月30日 14:54
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。