参照http://stwo.slmame.com/e940823.html
①まずドアを作る
パスカット(始点と終点)・・・0.375 と 0.875
②ドアを子プリムにして、本体とリンクする
この時、ルートプリム(編集時、黄色く表示されるプリム)を固定したら
それ以降、変更しないように
③以下のスクリプトをコピーする
default
{
touch_start(integer num) {
string S_Tmp = "\n\t\t//----------------\n";
S_Tmp += "\t\tS_Pos += [" + (string)llGetLocalPos() + "];\n";
S_Tmp += "\t\tS_Rot += [" + (string)(llRot2Euler(llGetLocalRot())*RAD_TO_DEG) + "];\n";
S_Tmp += "\t\tS_Snd += [\"\"];\n";
S_Tmp += "\t\t//----------------";
llOwnerSay(S_Tmp);
}
}
プリム編集画面で、リンク部分を編集にチェックを入れて、ドアを選択
中身(コンテンツ)タブを選択して、新しいスクリプトをクリック
新しくできたスクリプトを開き、書かれているスクリプトを消す
先ほどコピーしたスクリプトをペーストして保存する
編集画面を閉じる
④ドアの位置を記録する
ドアを初期の位置にしてクリック
このときチャット欄に出てくる数字が位置情報
続いて、ドアを開けた位置に合わせて再度クリック
これらの数値は後で使用します
⑤メインスクリプトを入れる
以下のスクリプトをコピーする
list S_Pos = [];
list S_Rot = [];
list S_Snd = [];
integer S_Mode = 0;
SMove(integer num) {
if (llGetListLength(S_Pos) > num) {
key S_Sound = llList2Key(S_Snd, num);
if (S_Sound) llPlaySound(S_Sound, 1.0);
llSetPrimitiveParams([
PRIM_POSITION, llList2Vector(S_Pos, num),
PRIM_ROTATION, llEuler2Rot(llList2Vector(S_Rot, num)*DEG_TO_RAD) / llGetRootRotation()
]);
}
}
default
{
state_entry() {
// ここへ順番にコピペしてください。一番最初が初期位置となります。
// ここまで
SMove(0);
}
touch_start(integer num) {
if (++S_Mode >= llGetListLength(S_Pos)) S_Mode = 0;
SMove(S_Mode);
}
}
ドアのスクリプトを上記のものに差し替える
⑥メインスクリプトに位置情報を入力する
④で表示された位置情報を
// ここへ順番にコピペしてください。一番最初が初期位置となります。
// ここまで
の場所に挿入する
保存して糸冬 了..._φ(゚∀゚ )アヒャ
開閉音を挿入する場合は
フルパーのサウンドを用意し、UUIDを
位置情報3行目の" "の空欄に入力する
0 comment:
コメントを投稿