![]() |
|
#1
|
||||
|
||||
|
本文通过实例代码方式来介绍粒子效果的制作, 首先你需要登陆到second life中, 然后在一块可创建物体并可运行脚本的土地上创建一个基本物体, 然后在物体的内容栏目中新建一个脚本, 把下面脚本粘贴到新创建的脚本, 保存后即可实现物体的光环效果.
Code:
start_effect() //启动粒子效果
{
list params = llGetPrimitiveParams([PRIM_POINT_LIGHT]);
vector color;
integer lit = llList2Integer(params, 0);
if(lit) {
color = (vector) llList2String(params, 1);
} else {
params = llGetPrimitiveParams([PRIM_COLOR, 0]);
color = (vector) llList2String(params, 0);
}
llTargetOmega(<0.0,0.0,1.0>, 1.0, 1.0);
llParticleSystem([PSYS_PART_FLAGS, PSYS_PART_BOUNCE_MASK | PSYS_PART_EMISSIVE_MASK | PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK,
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_ANGLE_CONE, //粒子的系统属性
PSYS_PART_START_COLOR, color, //粒子开始颜色为零设置
PSYS_PART_START_ALPHA, 1.0, //粒子开始透明度为完全不透明
PSYS_PART_END_ALPHA, 0.0, //粒子结束时候透明度完全透明
PSYS_PART_END_COLOR, <1.0,1.0,1.0>, //粒子结束颜色为白色
PSYS_PART_START_SCALE, <.24,.25,.21>, //粒子开始产生时的覆盖面积
PSYS_PART_END_SCALE, <.03,.25,.1>, //粒子结束时产生的覆盖面积
PSYS_SRC_BURST_PART_COUNT, 100, //粒子数, 这里为100个粒子
PSYS_PART_MAX_AGE, 2.5, //粒子效果的生存时间, 单位秒
PSYS_SRC_BURST_RATE, 0.0, //粒子产生的速度, 这里为0, 表示最快的速度
PSYS_SRC_ACCEL, <0.0, 0.0, 0.98>, //粒子的空间加速移动, 例子中x坐标为0, y坐标为0, z坐标0.98
PSYS_SRC_BURST_SPEED_MIN, 0.0, //例子产生的最小速度, 这里为0, 表示最快的速度
PSYS_SRC_BURST_SPEED_MAX, 0.0, //例子产生的最大速度, 这里为0, 表示最快的速度
PSYS_SRC_OMEGA, <0.0, 0.0, 1.0>, //粒子的旋转角度, 单位弧度, 1弧度等于180度
PSYS_SRC_BURST_RADIUS, 1.0, //粒子产生的点与物体中心的距离, 这里为1米
PSYS_SRC_ANGLE_BEGIN, PI/2 - 0.01, //粒子活动空间的起始点, 单位弧度
PSYS_SRC_ANGLE_END, PI/2]); //粒子活动空间的结束点
}
default
{
state_entry() //程序入口点
{
start_effect();
}
on_rez(integer start_param) //物体被rez时执行下面语句
{
if(start_param != 0) {
llSetStatus(STATUS_DIE_AT_EDGE, TRUE);
llSetPrimitiveParams([PRIM_TEMP_ON_REZ, TRUE]);
llSetTimerEvent(10.0);
} else {
llSetStatus(STATUS_DIE_AT_EDGE, FALSE);
llSetPrimitiveParams([PRIM_TEMP_ON_REZ, FALSE]);
llSetTimerEvent(0.0);
llWhisper(0, "Edit mode. Change the light color and touch me to change the particle color.");
}
start_effect();
}
touch_start(integer param) //touch后执行粒子效果代码段
{
start_effect();
}
timer()
{
llDie();
}
}
__________________
如果你有任何建议, 问题或想法, 欢迎发到论坛上. If u have any comments, questions or ideas, please post here. |
|
#2
|
||||
|
||||
|
ken 辛苦了。。。顶起来
|