4.7 Environment (Time, Air, Earth, Water, Weather)

環境設定有包含時間 空氣 地表 水 天氣等等

1.時間

llSetTimerEvent(x);

設定每x秒觸發timer()事件裡的程式

以程式碼例子來說:

float gap = 2.0; //時間的間隔為2秒
float counter = 0.0;//設定秒數起始值
 
default
{
state_entry()
{
// 根據gap 這個變數的值 觸發time()的事件
llSetTimerEvent(gap);
}
 
timer()
{
counter = counter + gap;
llSay(0, (string)counter+" seconds have passed");
}
}

 

 

上面這範例的結果

2.000000 seconds have passed

4.000000 seconds have passed

6.000000 seconds have passed

......依此類推

llGetWallclock();

傳回從00:00算起的秒數

還有llGetTime(),llGetDate(), llGetUnixTime()可以取得不同格式的時間和日期

另外還有些和時間相關的function:

llGetAndResetTime

llGetRegionTimeDilation

llGetTimeOfDay

llGetTimestamp

 

*另外 在Second life中,如果覺得天色太黑,想要調成白天或是中午,只要點選上方欄位中的世界,最下一列有環境設置就可以自由調成 日出 中午 日落 半夜 以及恢復地區預設值,就可以自由選擇自己想要的環境時間

2.空氣

calcWindAngle();取得風向角度

利用這個去改變物體的位置 就像被風吹一樣

3.地表

llGround(ZERO_VECTOR);

取得地表高度 範例為地表零位面 為最常用的參數

llGroundSlope(Vector offset);

地表坡度的函數Returns a vector that is the ground slope

below the object  position + offset

4.水

llWater(ZERO_VECTOR);

取得水面高度 範例為水平面 為最常用的參數

5.天氣

一樣是用llParticleSystem粒子系統去改變

模擬暴風雪的寫法
llParticleSystem( [
PSYS_PART_FLAGS, (PSYS_PART_INTERP_COLOR_MASK | PSYS_PART_INTERP_SCALE_MASK),
// 表面
PSYS_SRC_TEXTURE, "60ec4bc9-1a36-d9c5-b469-0fe34a8983d4", //粒子素材UUID
PSYS_PART_START_ALPHA, 1.0, 起始點透明度
PSYS_PART_END_ALPHA, 0.0, 終點透明度
PSYS_PART_START_SCALE, <0.2, 0.2, 0.0 >, 起點影響範圍
PSYS_PART_END_SCALE, <0.7, 0.7, 0.0 >, 終點影響範圍
// 流動
PSYS_PART_MAX_AGE, 10.0, // 部分粒子存在的時間
PSYS_SRC_BURST_PART_COUNT, 20, // 噴射出來部分粒子的數量
PSYS_SRC_BURST_RATE, 0.2, // 粒子噴射率
PSYS_SRC_MAX_AGE, 0.0, // 粒子噴射時間 0表是永遠噴射
// 位置
PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE, //粒子爆炸形式
PSYS_SRC_BURST_RADIUS, 5.0, //粒子噴射半徑
PSYS_SRC_OMEGA, <0, 0, 0>, //粒子噴射角速度
PSYS_SRC_BURST_SPEED_MIN, 0.4, // 粒子噴射最小速度
PSYS_SRC_BURST_SPEED_MAX, 1.0, // 粒子噴射最大速度
PSYS_SRC_ACCEL, <0.0, 0.0, -0.25>// 粒子噴射加速度
]);