説明:
次のサンプル スクリプトは、パーティクル速度に従って particleInteger チャンネルに整数値を割り当てます。
用途:
.Assignment_Type が
4: [By Script Integer]
に設定されているとき、Find_Target テスト内でターゲットを選択するために使用できます。
効果:
Find_Target オペレータと使用すると、particleIntegerチャンネルで、インデックスからターゲット オブジェクトを指定できます。
フレームごとの速度が 1 単位より小さい場合、パーティクルは最初のターゲット(インデックス 0) に割り当てられます。フレームごとの速度が 10 単位より大きい場合、パーティクルは 3 番目のターゲット(インデックス 2)に割り当てられます。その他のすべてのパーティクルは
2 番目のターゲット (インデックス 1) に割り当てられます。
例:
|
--ChannelsUsed ハンドラは、スクリプトに提供される
--チャンネルを定義します。
--すべてのチャンネルのリストについては、
--インタフェース: MaxscriptParticleContainer を参照してください。
--ハンドラに渡されるパラメータ pCont には
--スクリプトの適用先のパーティクル コンテナが含まれています。
on ChannelsUsed pCont do
(
--時間チャンネルを有効にします。
pCont.useTime = true
--速度チャンネルを有効にします。
pCont.useSpeed = true
--整数チャンネルを有効にします。
pCont.useInteger = true
)
--初期化時には Init ハンドラが呼び出されます。
--この例では使用しません。
on Init pCont do
(
)
--Proceed ハンドラには、パーティクルに割り当てる
--メイン スクリプトが含まれています。
--ハンドラに渡されるパラメータ pCont には
--スクリプトの適用先のパーティクル コンテナが含まれています。
on Proceed pCont do
(
--パーティクル数を取得
count = pCont.NumParticles()
--2 つのローカル変数 slowSpeed と fastSpeed の定義:
--それぞれフレームあたり 10 単位と 160 単位 (NTSC 時間では 1 ティックが フレーム)
slowSpeed = 1/160.0
fastSpeed = 10/160.0
--1 からパーティクルの数だけループ
for i in 1 to count do
(
--コンテナ内のパーティクル インデックスに現在の i 値を設定します。
pCont.particleIndex = i
--particleSpeed ベクターの長さが
--定義された slowSpeed 値より短い場合、
--particleInteger 値を 0 に設定します。
iflength(pCont.particleSpeed) < slowSpeedthen
pCont.particleInteger = 0
--パーティクルの速度が slowSpeed 値より速い場合、
--fastSpeed 値に対して速度をテストします。パーティクルの速度のほうが速い場合は 2、遅い場合は
--(slowSpeed と fastSpeed 間で) 1 を
--particleInteger チャンネルに割り当てます。
else
(
if (length(pCont.particleSpeed) > fastSpeed) then
pCont.particleInteger = 2
else
pCont.particleInteger = 1
)
)--i ループを終了
)--Proceed を終了します。
--Release ハンドラを使ってクリーンアップを行います。
--この例では使用しません。
onRelease pContdo
(
)
|