2009年09月27日

タッチでアニメーションを切り替えたいですが・・


こんばんは
オブジェクトをタッチしてその回数によって
再生されるアニメを変更していくスクリを作ろうとおもってるのですが・・
最近・・少しは理解してきたきがするですが・・
どうもまたつまってしまいました・・
ご指導いただばたすかりますm(_ _)m
-----------------------------------------------------------------------------------------------------
integer counter=0;
key agent = NULL_KEY;

default {
state_entry(){
counter = 0;

}


touch_start(integer detected){
counter ++;
if (counter == 0){
}

llRequestPermissions(llDetectedKey(0), PERMISSION_TRIGGER_ANIMATION);
}
}


if (counter == 1){

key chk = llGetInventoryKey("001");
list anms = llGetAnimationList(agent);
integer i;
for (i = 0; i < llGetListLength(anms); i++){
if (chk == llList2Key(anms, i)) {

llStopAnimation("boogie");
return;
}
}

llStartAnimation("001");

}

if (counter == 2){

key chk = llGetInventoryKey("002");
list anms = llGetAnimationList(agent);
integer i;
for (i = 0; i < llGetListLength(anms); i++){
if (chk == llList2Key(anms, i)) {

llStopAnimation("002");
return;
}
}

llStartAnimation("002");

}

}
}
-----------------------------------------------------------------------------------------------------

いろいろ・・ねばってみたんですが・・・
結果的に割ってない気もしたり
見当違いな組み方になってるとは思うですが・・

よろしくお願いしますm(_ _)m



同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by Philotes  at 02:44 │Comments(7)スクリプト関連

この記事へのコメント
実現したいことをなるべく具体的に書かないと、答える側の方々も答えづらいと思いますよ。

たとえば、
オブジェクトはHUDではなくどこかにRezされているもの?
タッチする人は特定の人か、それとも不特定多数?


持ち主がタッチしたら、今再生しているアニメーションを停止してアニメーション”001”を再生させる。

次にタッチしたら、”001”を停止して”002”を再生させる

またタッチしたら”002”を停止して”003”を再生させる

て感じなのかな?


どのようなシチュエーションで使用されるものなのかが、いまいち見えないので・・・
Posted by あ at 2009年09月27日 04:52
あさんコメント有り難うございます。

オブジェクト自体はアバター装着です。
それを本人だけがタッチ出来て
最初のタッチで001を再生
次にタッチしたら002を再生
3回目で003を再生
4回目でアニメを停止としたいんですが・・

依然・・思うようにはいってないです
.+:。ヨヨヨョョョ(´;ω;`)´-ω-`)´_ _`)ョョョヨヨヨ゚.+:。
Posted by philotes at 2009年09月27日 15:00
・アバター装着型
・オーナーのみが操作
・アニメーション数は3

という条件で、処理手順を考えてみました。


list anms = ["001", "002", "003"];
integer counter = 0;

attachイベント
  ・アタッチされたなら、パーミッションのリクエスト
  ・デタッチされたなら、(アニメーションしている場合は)アニメーションを停止

touchイベント
  (HUDでない(他の人もタッチできる場所)なら、if文でオーナーのみに限定)

    ・コンテンツ内のアニメーションを再生している場合は停止する

    ・counter<3の場合(1~3回目のタッチ)
      ・リストanmsのcounter番目のアニメーション名を再生する
            (例えばcounterが0なら、0番目である”001”)
      ・counterをインクリメント(counter++)

    ・counter==3の場合(4回目のタッチ)
      ・counterを0に戻す


コンテンツ内のアニメーションを入れ替えて名前や数が変わる可能性があるなら、そのあたりを考慮した処理が必要になってきますね。

がんばってください。
Posted by あ at 2009年09月27日 16:59
コメントありがとうごさいます。

せっかくヒントを頂いたですが・・
私には無理なようです。
ねばってみましたが・・
組あげることはできませんでした。
.+:。ヨヨヨョョョ(´;ω;`)´-ω-`)´_ _`)ョョョヨヨヨ゚.+:。
Posted by philotes at 2009年09月27日 18:33
こちらにかいてみました^^
http://mydiary.slmame.com/e741755.html
Posted by Whitfield-In-WorldWhitfield-In-World at 2009年09月27日 22:30
追記3回もしちゃいました。。。追記も参照してください。。。
Posted by Whitfield-In-WorldWhitfield-In-World at 2009年09月27日 23:09
Whitfield-In-World様
コメントありがとうございます。
昨日の時点でちょっとあきらめてしまった感が
あるのですが・・
ブログの方確認させて頂きなんとか組あげることが
できました。
わかりやすく解説もして頂き
大変助かりました。
ありがとうございますm(_ _)m
Posted by philotes at 2009年09月28日 15:27
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。