説明:
次のサンプル スクリプトは、パーティクル速度に従って particleInteger チャネルに整数値を割り当てます。
用途:
.Assignment_Type
が 4: [By Script Integer]に設定されているとき、Find_Target テスト内でターゲットを選択するために使用できます。
効果:
Find_Target オペレータと使用すると、particleIntegerチャネルで、インデックスからターゲット オブジェクトを指定できます。
フレームごとの速度が 1 単位より小さい場合、パーティクルは最初のターゲット(インデックス 0) に割り当てられます。フレームごとの速度が 10 単位より大きい場合、パーティクルは 3 番目のターゲット(インデックス 2)に割り当てられます。その他のすべてのパーティクルは 2 番目のターゲット (インデックス 1) に割り当てられます。
例
--The ChannelsUsed handler defines the channels --to be made available to the script. --For the list of all channels, see --Interface: MaxscriptParticleContainer --The parameter pCont passed to the handler --contains the Particle Container the script is applied to on ChannelsUsed pCont do ( --Enable the Time channel: pCont.useTime = true --Enable the Speed channel: pCont.useSpeed = true --Enable the Integer channel: pCont.useInteger = true ) --The Init handler is called on initialization. --It is not used in this case. on Init pCont do ( ) --The Proceed handler contains the main script --applied to the Particles. --The parameter pCont passed to the handler --contains the Particle Container the script is applied to: on Proceed pCont do ( --get the number of particles count = pCont.NumParticles() --define two local variables slowSpeed and fastSpeed --as 1 resp. 10 units per frame (in NTSC time 160 ticks are 1 frame) slowSpeed = 1/160.0 fastSpeed = 10/160.0 --Loop from 1 to the number of particles: for i in 1 to count do ( --Set the particle index in the container to the current i value pCont.particleIndex = i --If the length of the particleSpeed vector is shorter than --the defined slowSpeed value, --then set the particleInteger value to 0: if length(pCont.particleSpeed) < slowSpeed then pCont.particleInteger = 0 --If the particle is faster than the slowSpeed value, test its --speed against the fastSpeed value. If faster, assign 2, if slower, --(between slowSpeed and fastSpeed), assign 1 to the --particleInteger channel: else ( if (length(pCont.particleSpeed) > fastSpeed) then pCont.particleInteger = 2 else pCont.particleInteger = 1 ) )--end i loop )--end Proceed --The Release handler is used to do cleanup work. --Not used in this case. on Release pCont do ( )