Islab Forums
Welcome to Islab Forums! Home World Current location Blog Current location Forum Directory Contact Sitemap Print this page Bookmark this page

Go Back   Islab Forums > Islab Forums > 居民帮助与交流
FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply Bookmark this page at del.icio.us
 
Thread Tools Display Modes
  #1  
Old 12-26-2007, 06:42 PM
zhaoke's Avatar
zhaoke zhaoke is offline
Ken March in SL
 
Join Date: Dec 2006
Location: Islab.org
Posts: 348
Default 脚本: 光环效果

本文通过实例代码方式来介绍粒子效果的制作, 首先你需要登陆到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();
    }
}
Name:  particle.jpg
Views: 240
Size:  6.4 KB
__________________
如果你有任何建议, 问题或想法, 欢迎发到论坛上.
If u have any comments, questions or ideas, please post here.
Reply With Quote
  #2  
Old 12-26-2007, 07:01 PM
Star's Avatar
Star Star is offline
Junior Member
 
Join Date: Oct 2007
Posts: 28
Default

ken 辛苦了。。。顶起来
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +8. The time now is 09:45 AM.   RSS Feed


Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.