2010年01月28日
HUDの回転
こんにちは、現在折りたたみ式のHUDを作成しています。
今回の質問なのですが、HUD自体をドアのように回転させることで折りたたまれたように見せようと思っています。
本当はHUD本体の後ろに隠した子プリムをボタンタッチで上下左右にスライドさせることで折りたたみ式のHUDを作ろうと思ったのですが、スクリプト初心者で以前書かれていたHUDをスライド(http://oshiete.slmame.com/e508694.html)という記事を見て命令文を検索してもよく分かりませんでした;;
そこで妥協案としてHUD自体を回転させて折りたたんだように見せる方法にしようと思い、ドアのスクリプトを使ってHUDを回転させることにしました。
しかし、ドアのスクリプトを入れてみたのですが、HUDを装着せずに地面にrezしてる時はうまく設定した角度で動いてくれるのですが、それをテイクしてHUD装着して動かしてみると指定したように動いてくれないのです。
おかしな方向に傾いたり、設定していない角度に動いたりします。
使用しているスクリプトは以下のものです。
integer isOpen = FALSE;
default
{
touch_start(integer total_number)
{
rotation doorRot = llGetRot();
if(isOpen==FALSE){
llSetRot(doorRot * llEuler2Rot(<0,0,PI_BY_TWO>));
isOpen = TRUE;
}else{
llSetRot(doorRot * llEuler2Rot(<0,0,-PI_BY_TWO>));
isOpen = FALSE;
}
}
}
解決策をご教授して頂ければ幸いです。
よろしくお願いします。
今回の質問なのですが、HUD自体をドアのように回転させることで折りたたまれたように見せようと思っています。
本当はHUD本体の後ろに隠した子プリムをボタンタッチで上下左右にスライドさせることで折りたたみ式のHUDを作ろうと思ったのですが、スクリプト初心者で以前書かれていたHUDをスライド(http://oshiete.slmame.com/e508694.html)という記事を見て命令文を検索してもよく分かりませんでした;;
そこで妥協案としてHUD自体を回転させて折りたたんだように見せる方法にしようと思い、ドアのスクリプトを使ってHUDを回転させることにしました。
しかし、ドアのスクリプトを入れてみたのですが、HUDを装着せずに地面にrezしてる時はうまく設定した角度で動いてくれるのですが、それをテイクしてHUD装着して動かしてみると指定したように動いてくれないのです。
おかしな方向に傾いたり、設定していない角度に動いたりします。
使用しているスクリプトは以下のものです。
integer isOpen = FALSE;
default
{
touch_start(integer total_number)
{
rotation doorRot = llGetRot();
if(isOpen==FALSE){
llSetRot(doorRot * llEuler2Rot(<0,0,PI_BY_TWO>));
isOpen = TRUE;
}else{
llSetRot(doorRot * llEuler2Rot(<0,0,-PI_BY_TWO>));
isOpen = FALSE;
}
}
}
解決策をご教授して頂ければ幸いです。
よろしくお願いします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
アバターの向きに対しての回転を取得・設定したい場合は、llGetLocalRot()・llSetLocalRot()を使用する。
integer isOpen = FALSE;
default
{
state_entry()
{
llSetLocalRot(llEuler2Rot(<0,0,PI_BY_TWO>));
//または llSetLocalRot(llEuler2Rot(ZERO_ROTATION));
}
touch_start(integer total_number)
{
rotation doorRot = llGetLocalRot();
if(isOpen==FALSE){
llSetLocalRot(doorRot * llEuler2Rot(<0,0,PI_BY_TWO>));
isOpen = TRUE;
}else{
llSetLocalRot(doorRot * llEuler2Rot(<0,0,-PI_BY_TWO>));
isOpen = FALSE;
}
}
}
llSetLocalRot(llEuler2Rot(ZERO_ROTATION));
↓
llSetLocalRot(ZERO_ROTATION);
ありがとうございました、おかげさまで自分の理想に近いHUDができそうです。
本当にありがとうございました。