●関数解説
| llSetCameraParams | |
|---|---|
| ・概要 | |
|
llSetCameraParams関数は、カメラを制御するための関数です。 引数に様々な定数と値をリスト型で設定することにより、カメラを自由自在に操ります。 スクリプトでカメラコントロールをオン・オフするには、定数 CAMERA_ACTIVE、値 TRUE または FALSE を設定します。 | |
| ・書式 | |
| llSetCameraParams(list rules) | |
| ・パラメータ | |
|
定数 : CAMERA_ACTIVE 定数の値 : 12 型 : integer 単位 : isActive デフォルト値 : FALSE 値の範囲 : TRUE or FALSE 記述 : スクリプトでのカメラコントロールをオン・オフ リスト型によりカメラのパラメータ(定数と値)をセットします。 複数のカメラパラメータ(定数と値)を一度にセットすることができます。 | |
| ・戻り値 | |
|
なし
| |
| ・使い方 | |
|
llSetCameraParams([ CAMERA_ACTIVE, TRUE ]); ※ CAMERA_ACTIVE, 1 と設定しても問題ありません。この場合、CAMERA_ACTIVE, TRUE と同じ意味になります。 |
●サンプル
アバターの正面にカメラを移動させるサンプルです。
サンプルを実行した時にカメラが移動しない場合は、Alt + Zoom などで、カメラコントロールが支配されている状態にあります。
ESCキーを2回押して、カメラコントロールを解放すると、正常動作します。
この動作は、カメラコントロールの仕様なので、覚えておきましょう。
set_camera(vector vPos, vector vFwd){
integer perm = llGetPermissions();
if (perm & PERMISSION_CONTROL_CAMERA) {
llSetCameraParams([
// スクリプトでのカメラコントロールをオン
CAMERA_ACTIVE, TRUE,
CAMERA_POSITION, vPos + vFwd,
CAMERA_POSITION_LOCKED, TRUE,
CAMERA_FOCUS, vPos,
CAMERA_FOCUS_LOCKED, TRUE
]);
}
}
front_camera(){
vector vFwd = llRot2Fwd(llGetRot());
vFwd += vFwd;
vector vPos = llGetPos();
set_camera(vPos,vFwd);
}
default
{
state_entry(){
if (llGetAttached() != 0){
llRequestPermissions(llGetOwner(), PERMISSION_CONTROL_CAMERA);
front_camera();
}
}
attach(key agent){
if (agent != NULL_KEY){
llRequestPermissions(agent, PERMISSION_CONTROL_CAMERA);
front_camera();
}else{
integer perm = llGetPermissions();
if (perm & PERMISSION_CONTROL_CAMERA){
llClearCameraParams();
llReleaseCamera(llGetPermissionsKey());
}
}
}
on_rez(integer param){
llResetScript();
}
}
■参照
CAMERA_ACTIVE
CAMERA_BEHINDNESS_ANGLE
CAMERA_BEHINDNESS_LAG
CAMERA_DISTANCE
CAMERA_FOCUS
CAMERA_FOCUS_LAG
CAMERA_FOCUS_LOCKED
CAMERA_FOCUS_OFFSET
CAMERA_FOCUS_THRESHOLD
CAMERA_PITCH
CAMERA_POSITION
CAMERA_POSITION_LAG
CAMERA_POSITION_LOCKED
CAMERA_POSITION_THRESHOLD