Site search
2009年8月3日月曜日
視界を切り替えるスクリプト
いつの間にかブログ書くの結構さぼり気味になってる千尋です^^;;
今回はタッチで視界(カメラ)を切り替えるスクリプトです。乗り物とかオブジェクトに座る場合はllSetCameraAtOffsetとllSetCameraEyeOffsetで簡単に設定する方法もありますが、今回は装着用なのでllSetCameraParamsを使いました。
llSetCameraParamsはパラメータがたくさんあってややこしいですけど、いろいろ細かい設定とかできそうですね。あと、アバターにアニメーションさせるのと同様に事前にパーミッションの要求が要ります。
装着してタッチすると、低めの視界、真上からの視界、通常の視界の順で切り替わるようにしました。HUDなどに組み込んで使用してくださいね^^
今回はタッチで視界(カメラ)を切り替えるスクリプトです。乗り物とかオブジェクトに座る場合はllSetCameraAtOffsetとllSetCameraEyeOffsetで簡単に設定する方法もありますが、今回は装着用なのでllSetCameraParamsを使いました。
llSetCameraParamsはパラメータがたくさんあってややこしいですけど、いろいろ細かい設定とかできそうですね。あと、アバターにアニメーションさせるのと同様に事前にパーミッションの要求が要ります。
装着してタッチすると、低めの視界、真上からの視界、通常の視界の順で切り替わるようにしました。HUDなどに組み込んで使用してくださいね^^
// 視界切り替え
integer cam=1; // 最初は1(低め)
cam1()
{ // 低めの位置になるカメラ設定
llSetCameraParams([
CAMERA_ACTIVE, TRUE,
CAMERA_BEHINDNESS_ANGLE, 5.0,
CAMERA_DISTANCE, 3.0,
CAMERA_FOCUS_OFFSET,<2,0,0>]);
llOwnerSay("Under");
}
cam2()
{ // 真上から見えるカメラ設定
llSetCameraParams([
CAMERA_ACTIVE, TRUE,
CAMERA_BEHINDNESS_ANGLE, 0.0,
CAMERA_PITCH, 80.0,
CAMERA_FOCUS_THRESHOLD, 0.0,
CAMERA_DISTANCE, 20.0,
CAMERA_FOCUS_OFFSET,<0,0,0>]);
llOwnerSay("Over head");
}
set_cam()
{
llClearCameraParams(); // カメラ設定を初期化
// camの値によって処理を分ける
if (cam == 0) llOwnerSay("Normal"); // 普通
else if (cam == 1) cam1(); // 低め
else if (cam == 2) cam2(); // 真上
}
default
{
state_entry()
{
// 装着されてたらカメラコントロールの権限を要求
if (llGetAttached()) llRequestPermissions(llGetOwner(), PERMISSION_CONTROL_CAMERA);
}
attach(key id)
{
// 装着したらカメラコントロールの権限を要求
if (id) llRequestPermissions(id, PERMISSION_CONTROL_CAMERA);
}
touch_start(integer total_number)
{
if (llGetPermissionsKey() == llDetectedKey(0)) {
// タッチしたアバターのパーミッションが有効になってたら
cam++; // camの値を1増やす
if (cam > 2) cam=0; // camの値が2を超えたら0にする
set_cam(); // set_camへ
}
}
run_time_permissions(integer perm)
{
if (perm & PERMISSION_CONTROL_CAMERA)
{ // カメラコントロールが許可されたらset_camへ
set_cam();
}
}
}
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿