これで最初に見たソースコードと同じになる。「TRUE」か「FALSE」あるいは、最初にある変数の定義部分で数値を変化させれば、パーティクルのいろいろな挙動を試すことができる。少し長いが、これで汎用的に使えるスクリプトが出来上がった。参考のため、ソースコードをテキストでも下に載せておこう。
//==========================================================================
// Particle Script 4.2
//==========================================================================
// Created by Ama Omega : 10-10-2003
// Edited & Updated by Jin Spear : 24-10-2007
//==========================================================================
//
//==========================================================================
// 1.System Behavior //
//==========================================================================
// : Mask Flags - set to TRUE to enable
//--------------------------------------------------------------------------
integer bounce = FALSE; // Bounce on the center of Object up
integer glow = TRUE; // Lighting in the night
integer followSource = FALSE; // Follow the Object
integer followVel = TRUE; // Sprit from center to Out
integer interpColor = TRUE; // Enable "endColor" in 43 line
integer interpSize = TRUE; // Enable "endColor" in 47 line
integer wind = FALSE; // Affected wind force.
//==========================================================================
// 2.System Pesentation //
//==========================================================================
// : Choose a pattern from the following:
//--------------------------------------------------------------------------
// PSYS_SRC_PATTERN_ANGLE
// PSYS_SRC_PATTERN_ANGLE_CONE
// PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY
// PSYS_SRC_PATTERN_DROP
// PSYS_SRC_PATTERN_EXPLODE
//--------------------------------------------------------------------------
integer pattern = PSYS_SRC_PATTERN_EXPLODE;
float innerAngle = 1.55; // Inner angle for all ANGLE patterns
float outerAngle = 1.54; // Outer angle for all ANGLE patterns
float radius = 0; // Radius to emit particles for BURST pattern
//--------------------------------------------------------------------------
// Select a target for particles to go towards
//--------------------------------------------------------------------------
// "owner" will follow object owner
// "self" will target this object
// or put the key of an object for particles to go to
key targetLine = "";
key targetPosi = "";
//==========================================================================
// 3.Particle Appearance //
//==========================================================================
vector startColor = <0,25,0>; // Start color of particles
vector endColor = <0,75,0>; // End alpha (transparency) value
float startAlpha = 10; // Start alpha (transparency) value
float endAlpha = 10; // End alpha (transparency) value
vector startSize = <.5,.5,.5>; // Start size of particles
vector endSize = <.1,.1,.1>; // End size of particles
//--------------------------------------------------------------------------
// Put any texture into Object
//--------------------------------------------------------------------------
// texure name between " and "
string texture = "";
//==========================================================================
// 4.Particle Flow //
//==========================================================================
float life = 0; // Life in seconds for the system to make particles
float age = 1.5; // Life of each particle
float rate = .1; // How fast (rate) to emit particles
integer count = 10; // How many particles to emit per BURST
//==========================================================================
// 5.Particle Motion //
//==========================================================================
vector push = <0,0,1>; // Force pushed on particles
vector omega = <0,0,10>; // Rotation of ANGLE around the source
float minSpeed = .1; // Min speed each particle is spit out at
float maxSpeed = .2; // Max speed each particle is spit out at
//==========================================================================
// ** Script variables
//==========================================================================
integer flags;
default
{
state_entry()
{
flags = 0;
if (targetLine == "owner") targetLine = llGetOwner();
if (targetLine == "self") targetLine = llGetKey();
if (targetPosi == "owner") targetPosi = llGetOwner();
if (targetPosi == "self") targetPosi = llGetKey();
if (bounce) flags = flags | PSYS_PART_BOUNCE_MASK;
if (glow) flags = flags | PSYS_PART_EMISSIVE_MASK;
if (followSource) flags = flags | PSYS_PART_FOLLOW_SRC_MASK;
if (followVel) flags = flags | PSYS_PART_FOLLOW_VELOCITY_MASK;
if (interpColor) flags = flags | PSYS_PART_INTERP_COLOR_MASK;
if (interpSize) flags = flags | PSYS_PART_INTERP_SCALE_MASK;
if (targetLine != "") flags = flags | PSYS_PART_TARGET_LINEAR_MASK;
if (targetPosi != "") flags = flags | PSYS_PART_TARGET_POS_MASK;
if (wind) flags = flags | PSYS_PART_WIND_MASK;
llParticleSystem(
[
// 1.System Behavior //
PSYS_PART_FLAGS, flags,
// 2.System Pesentation //
PSYS_SRC_PATTERN, pattern,
PSYS_SRC_BURST_RADIUS, radius,
PSYS_SRC_ANGLE_BEGIN, outerAngle,
PSYS_SRC_ANGLE_END, innerAngle,
PSYS_SRC_TARGET_KEY, targetPosi,
PSYS_SRC_TARGET_KEY, targetLine,
// 3.Particle Appearance //
PSYS_PART_START_COLOR, startColor,
PSYS_PART_END_COLOR, endColor,
PSYS_PART_START_ALPHA, startAlpha,
PSYS_PART_END_ALPHA, endAlpha,
PSYS_PART_START_SCALE, startSize,
PSYS_PART_END_SCALE, endSize,
PSYS_SRC_TEXTURE, "",
// 4.Particle Flow //
PSYS_SRC_MAX_AGE, life,
PSYS_PART_MAX_AGE, age,
PSYS_SRC_BURST_RATE, rate,
PSYS_SRC_BURST_PART_COUNT, count,
// 5.Particle Motion //
PSYS_SRC_ACCEL, push,
PSYS_SRC_OMEGA, omega,
PSYS_SRC_BURST_SPEED_MIN, minSpeed,
PSYS_SRC_BURST_SPEED_MAX, maxSpeed
]);
}
}
//==========================================================================
さて、今回で、バイク編の2番目である「パーティクル」が終わった。次回は最後の「乗物エンジン」に移ろう。主に、バイク(2輪車)にはなるが、自動車(4輪車)も同様の原理で動くようになる。
次回からもかなり長いスクリプトになるが、これをクリアすれば、好きな2輪車や4輪車など、何でも作ることが出来る。それでは、次回もお楽しみに

大槻透世二サイバーアドベンチャー(株)
代表取締役社長/CEO
デジタルハリウッド大学院
次世代インターフェース研究室 研究員
Second Life研究室 研究員/プロデューサー
Linden社推薦 Second Lifeセミナー講師
東北大学心理学専攻卒業。1年間のLA留学を経て、ソリッドレイ研究所でバーチャルリアリティのシステムインテグレーション、立体映像システム構築、HMDシステム構築などを経験。IT系コンサルティング会社を経て、デジタルハリウッド大学大学院コンテンツマネジメント修士課程修了(MCA)。その後、Linden Lab本社にてSecond Lifeカリキュラムのトレーニングを受ける。現在デジタルハリウッドにて「Second Life」セミナーを開催。また、バーチャルリアリティ、メタバース関連のシステム開発/プロデュースを行うサイバーアドベンチャー(株)を設立し、そのCEO職に就いている。