BlackSheep-LSL@Wiki内検索 / 「フロー制御とは?」で検索した結果

検索 :
  • 基礎知識/フロー制御とは?
    フロー制御 フロー制御というのは、条件によって実行するコードを変えたり、繰り返し処理を行ったりするものを言います。 プログラムの処理の流れ(フロー)をコントロールするものなので、「フロー制御」と呼ばれます。 まずはフロー制御の種類を挙げておきます。 フロー制御 説明 if-else 条件分岐。条件に応じて実行するコードを変える。 whle ループ処理。条件を満たす間延々と繰り返し処理を行う。 do-while ループ処理。処理を行った後、条件を満たす場合は繰り返す。 for ループ処理。条件を変化させながら繰り返し処理を行う。 return 復帰(リターン)。ユーザー関数やイベントを終了する。 jump ジャンプ。指定したコードの行に処理を飛ばす。 state ステート。LSLのステートを変更する。 if-else フロー制御の中でも最も使用頻度が高いのがif...
  • 基礎知識
    ...用 Ⅰ-2-D.フロー制御とは? フロー制御if-else while/do-while for return jump state Ⅰ-2-E.関数とは? 関数関数の使い方 ユーザー関数 Ⅰ-3.イベントとは?? Ⅰ-4.ステートとは?? Ⅱ.SL世界の法則 アバター/オブジェクトアバター グループ? プリム/オブジェクト アイテムコンテンツ/インベントリ? アイテム ワールド座標系 SIM 物理 特殊効果ビデオ? パーティクル? ビークル? 外部機能Email? HTTP? XML-RPC?
  • 基礎知識/処理とは?
    処理はキモ LSLを台本に喩えるならば、「処理」の部分というのは「台詞」や「動作」にあたります。 これって台本の肝となる部分ですよね。 「処理」もLSLの肝と言って差し支えない部分です。 もしも「処理」がなかったら、そのLSLは「何もしない」のですから、LSLを書く意味がまったくなくなってしまいます。 また、台本に書かれた台詞や動作によってドラマや映画の良し悪しが変わってくるように、「処理」に書かれている内容はLSLの出来を大きく左右します。 どんなに優れた俳優さんであろうと、台本がボロボロだったらその能力を発揮できません。 コンピュータは優れた能力を持っていますが、「処理」の部分が間違っていれば正しく動いてはくれません。 さらにやっかいなことには、コンピュータというのは人間ほど機転が利きません。 俳優であれば、細かな指示を与えなくても、前後のストーリ...
  • スクリプト小技
    LSLの常套手段やちょっと気の利いた使い方、特殊な関数など、tipsのような記事です。 基本的にLSLの基礎がわかっている方向けの内容になっています。 回転について(記述中) はじめに rotation型 vector型 vectorとrotation間の変換 回転の向きについて rotationの合成 回転の合成順序 グローバル座標系とローカル座標系 リンクプリムの回転 テレポート テレポートハック 移動型テレポーター LSLで日本語を使う はじめに listenによる入力 URLエスケープの使用 その他の方法 パーティクル パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 鍵をかける はじめに 鍵をかけることの意味操作...
  • 高度なカメラ制御
    はじめに カメラ制御とはポジション フォーカス ロック ディスタンス ピッチ ビハインドネス ラグ スレッショルド カメラ制御の関数llSetCameraParams関数 llClearCameraParams関数 llReleaseCamera関数 カメラ制御スクリプト俯瞰カメラ 固定追尾カメラ 完全固定カメラ カメラの動的制御 はじめに 「初級スクリプト」でカメラ制御について簡単な方法は紹介したのですが、さらに踏み込んだカメラ制御について書いておこうと思います。 高度なカメラ制御を使うと、一定の場所にカメラを固定するだけではなく、例えばアバターの周囲をぐるぐると回転させたり、俯瞰視点にしてみたり、はたまたカメラを固定してアバターが自由に歩き回れるようなものなど、面白い見せ方がいろいろとできます。 こうしたスクリプトは動画作成や乗り物、ライドなどに応用することができます。 ...
  • 基礎知識/変数とは?
    変数 「変数」とは、しばしばプログラミング解説書では「データを入れておく箱のようなもの」と説明されます。 プログラミングに特有の概念ですので、今までプログラムなんて見たことも聞いたことも食べたこともない人にとっては意味不明な存在でしょう。 まずは喩えを使って簡単に変数について説明してみたいと思います。 子供にお使いを頼むことを考えてみて下さい。 「肉屋さんへ行って、このメモに書いてあるものを買ってきて」 こんな指示を出したとしましょう。このときの「メモ」というのが変数に当たります。 メモには、「ひき肉」と書いてあるかもしれないし、「レバ刺し」と書いてあるかもしれません。 意表をついて「カボチャ」とか書いてある可能性だってあります・・・。 同じメモでも、書いてある内容によっていろいろと意味が変わってくるように、変数というのは中にいろいろなデータを書...
  • 基礎知識/関数とは?
    関数 一般的に関数と言うと、 y = ax + b こんなのを思い出すかと思います。 中学校あたりの数学で出てくる「一次関数」というヤツですね。 これ、要するにxの値が変わると、それに関連してyの値も変わることから、「関数」と言われるんですね。 この数学用語を英語で言うと「function(ファンクション)」です。 ファンクションの意味を『新英和中辞典 第6版 (研究社)』で調べてみると、 1 機能,働き,作用,目的 2-a 職務,職能,職分,役目 b 【文法】 機能 3-a 儀式,行事; 祭典,祝典 b 《口語》 (規模の大きい)社交的会合,宴会 4-a 他のものに関連して変化するもの 《性質・事実など》, 相関関係 b 【数】 関数 こんなんが出てくるわけです。 最近のプログラムで“ファンクション”と言うと...
  • 基礎知識/定数とは?
    定数 「変数」というのは中身の値が変わるものでしたが、中身の変わらないものもあります。 それを「定数」と言います。 変数には自由な名前を付けることができるのに対し、定数はあらかじめ名前が決まっています。 例えば、「PI」という名前の定数があるのですが、この定数の実態は、 3.1415926535897932384626433832795 という小数値です。 これって要するに円周率です。 セカンドライフは3Dの仮想世界ですので、回転等の計算をするときにはしばしば円周率が登場します。 円周率が出てくるたびに、「3.141592653589…..」と数値を書くのは非常に面倒ですし、入力を間違える可能性もあります。 ですので、親切なリンデン社の誰かが、 「PIと書いたら3.1415926535897932384626433832795のことにするね...
  • カメラ制御
    はじめに カメラコントロールllSetCameraEyeOffset(vector offset); llSetCameraAtOffset(vector offset); 定点カメラスクリプト 今回のポイント はじめに 最後に衝突について説明して初級スクリプト講座を終えようと思っていたのですが、最近、カメラのコントロールが意外に面白い効果を出せることに気づいたので、今回はカメラの制御について書きたいと思います。 SLで言うところのカメラとは、「視点」のことです。 通常、SLの視点はユーザーが自由に動かすことができます。 ALTを押しながらアバターを左クリックすると、そのアバターに注目したりもできますね。 結構自由なカメラコントロールが許されていて、私のように趣味でムービーを作る者にとっては重宝しています。 スクリプトからカメラをコントロールする方法も用意さ...
  • 基礎知識/スクリプトとは?
    「スクリプト」の意味 スクリプトという言葉は、日常生活の中ではまず耳にすることが無いかと思います。 英語で書くとscriptですが、まずはこの単語の意味から調べてみることにします。もし英和辞書をお持ちでしたら引いてみて下さい。何と書かれているでしょうか? 辞書が手元にない方のために、私が調べた答えを載せますが、 演劇や映画、ラジオ、テレビなどの台本。脚本。 これがscriptの意味です。 台本とスクリプト 台本や脚本というと、場面に応じた動きや台詞が書かれたものです。 シーン1、魚屋・昼下がり  魚屋が手に鯖を持って笑顔で店頭に立っている。  魚屋「らっしゃい、らっしゃい」  カメラ:上方向にPAN  魚屋の屋根の上に不適な面構えの猫が仁王立ちになっている。  猫、忍者のように屋根を駆け下りる。  魚屋、猫の気配に屋根を見...
  • 基礎知識/演算子とは?
    演算子 まず最も基本的な演算子「=」について説明します。 「=」は「変数に代入する」という意味です。 つまり、 integer i = 100; というのは 「iに」・・・何に 「100を」・・・何を 「代入する」・・・どうする という処理になります。 「何に」「何を」という部分は変数もしくは定数になります。 「i」は整数型の変数ですし、「100」は値を直接指定した定数です。 「どうする」の部分が「=」ですが、「代入する」のように変数や定数を扱うための記号のことを「演算子(えんざんし)」と言います。 「=」は「代入演算子」と言い、「左側の変数に右側の変数の値または定数を代入」する演算子です。 単純な代入については変数のときにいくつか見てきましたので、少し応用した形をやってみましょう。 以下のような場合はどうなるでしょうか。 ...
  • 制御系
    制御系 パーミッション 関数・イベント名 区分 概要 定義 run_time_permissions イベント パーミッション要求に返答があったとき[参考]初級lsl-11 run_time_permissions(integer perm) llGetPermissions 関数 スクリプトのパーミッション情報を知る integer llGetPermissions() llGetPermissionsKey 関数 スクリプトの保持しているパーミッション対象者のUUIDを得る[参考]初級lsl-13 key llGetPermissionsKey() llRequestPermissions 関数 パーミッションを要求する[参考]初級lsl-11 llRequestPermissions(key agent, integer perm) コントロール 関数・イベント名 区...
  • デモ商品を作ろう
    はじめに デモ用商品の仕組み アタッチの制御llDetachFromAvatar(); attach?(key attached) llDie(); デモ商品用スクリプト 今回のポイント はじめに 今回はデモ用の商品を作る方法について書こうと思います。 デモ用とは、例えば一定期間のみ使用可能なもの、特定回数使ったら使えなくなるようなサンプル商品です。 当然ながら、スクリプトを使って制御をしますので、スクリプトが組み込めない商品(スキン・服・テクスチャ・アニメーションなど)に関してはここで解説する方法は使えません。 スクリプトが組み込める商品であれば、どんなものにも応用は利きますが、今回は特にアタッチメントについて見ていきます。 というのも、アタッチを制御するスクリプトについて今まで説明していないからです(^^; デモ用商品のスクリプトを通して、スクリプトによ...
  • llSetCameraAtOffset
    llSetCameraAtOffset llSetCameraAtOffset(vector offset) アバターがオブジェクトに座ったときのカメラ(視点)の向きを引数offsetで指定された方向に設定する。 この関数はアバターがオブジェクトに座る前に実行しておく必要がある。 すでに座っているアバターの視点をコントロールすることはできない。 例えば以下のコードはオブジェクトに座ったアバターの視点をオブジェクトの上方5mの位置に向ける。 default { state_entry(){ llSetCameraAtOffset( 0,0,5 ); } } オブジェクトに座ったときのアバターのカメラ位置(目の位置)を変更するにはllSetCameraEyeOffset関数を使う。 カメラの位置を方向をコントロールすると、例えばアバターがオブジ...
  • llSetCameraEyeOffset
    llSetCameraEyeOffset llSetCameraEyeOffset(vector offset) アバターがオブジェクトに座ったときのカメラ(視点)の位置を引数offsetで指定した場所に設定する。 引数offsetに指定するのはオブジェクトの中心からの相対位置である。 この関数はアバターがオブジェクトに座る前に実行しておく必要がある。 すでに座っているアバターの視点位置をコントロールすることはできない。 例えば以下のコードはオブジェクトに座ったアバターのカメラ位置をオブジェクトの後方(X軸マイナス方向)3mの位置する。 default { state_entry(){ llSetCameraAtOffset( -3,0,0 ); } } オブジェクトに座ったときのアバターのカメラの向き(視点の方向)を変更するに...
  • llReleaseControls
    llReleaseControls llReleaseControls() キーコントロールを終了する。 キーコントロールとはアバターのキー入力を取得する制御で、llTakeControls?関数を使って開始される。 llTakeControls?関数でキーコントロールを開始するにはPERMISSION_TAKE_CONTROLSパーミッションが必要であるが、llReleaseControls関数を実行するとコントロールが終了するだけでなく、PERMISSION_TAKE_CONTROLSパーミッションも解除される。 再びキーコントロールを開始する際にはllRequestPermissions関数を使って再度パーミッションの取得から始めなければならない。 ...
  • llReleaseCamera
    llReleaseCamera llReleaseCamera(key agent) カメラコントロールを終了する。 似たような関数にllClearCameraParamsがあるが、llClearCameraParamsはあくまでもカメラ制御のパラメータをデフォルトに戻して制御を一時停止するのみとなる。 llReleaseCameraはカメラ制御を完全に終了する。 カメラ制御に関しては高度なカメラ制御を参照。 名前 コメント
  • スクリプト初級
    初級スクリプト LSLに初めて触れる人向けに、なるべく実用的な例を挙げながら作り方を解説した記事です。 簡単なものから複雑なものへと進んでいきますので、最初から順に参照して下さい。 何ができるの?・・・LSLとは何か スクリプトの構成・・・ステート、イベント、処理について 初!スクリプト・・・初めてのLSL作成 椅子を作ろう・・・座れるオブジェクトの作り方 ドアを作ろう・・・タッチで開くドアの作り方 照明を作ろう・・・タッチで灯る照明の作り方 聞き耳を立てる・・・リッスンの使い方 ダイアログを使おう・・・ダイアログの使い方 看板を作ろう・・・様々な看板の作り方 ベンダーを作ろう・・・テクスチャの切り替え方法 お金を扱う・・・お金のやり取りをする方法 ノートを使おう・・・ノートカードからデータを読み込む方法 アニメさせよう・・・アニメーションの使い方 ポーズボール・・・座るとアニ...
  • インターフェース系
    インターフェース系 UI 関数・イベント名 区分 概要 定義 llDialog 関数 ダイアログを表示する[参考]初級lsl-8 llDialog(key id, string message, list buttons, integer chat_channel) llMapDestination 関数 マップに指定位置を表示する[参考]初級lsl-9 llMapDestination(string sim_name, vector position, vector lookat) llSetSitText 関数 パイメニューの「Sit」を他の文字列に変更する llSetSitText(string text) llSetText 関数 フロートテキストを設定する[参考]初級lsl-9 llSetText(string text, vector color, float al...
  • 何ができるの?
    はじめに スクリプトって何だ? スクリプトで何ができるのか はじめに 日本語によるスクリプトの解説記事が少ないという嘆きの声がしばしば聞こえてくるので、微力ながらスクリプトについて基本的なところから書いてみようと思います。 想定している読者は、スクリプトの知識が無い初心者さん。 加えて、プログラミングの知識も無いことを考慮しておくつもりです。 わかりやすく書けると良いのですが(^^; スクリプトって何だ? ワールド内に存在するほとんど全てのものをプレイヤーが製作するのがSLですが、一口に「ものづくり」と言っても、いくつかの分野があります。 一つには、建物や家具、置物、アクセサリーなどの小道具の製作。 これはprimというワールド内の物体を組み合わせることで形を作ります。 一般的にはbuildと呼ばれ、SLのモデリングツールに習熟することが必要な分野です...
  • llScaleTexture
    llScaleTexture llScaleTexture(float horizontal, float vertical, integer side) 引数faceで指定した面のテクスチャのスケール(リピート)を設定する。 スケールは引数horizontalで水平方向の倍率、引数verticalで垂直方向の倍率を指定する。 この関数で指定する水平・垂直方向のテクスチャ倍率は、ビルドツールで指定できる"Repeats per Face Horizontal (U)"及び"Vertical (V)"と等しい。 面の指定方法はllGetColor関数の説明を参照。 primの形状によって面番号は異なる。 この関数の実行には0.2秒かかる。 テクスチャのスケールをコントロールするには他にllSetPrimitiv...
  • 看板を作ろう
    はじめに フローティングテキストllSetText関数 回転看板llTargetOmega関数 アニメーション看板llSetTextureAnim関数 地図看板llSetTouchText関数 llMapDestination関数 ランドマーク看板llGiveInventoryList関数 まとめ はじめに 第六回~第八回は初級スクリプトの最初の山場でした。 へヴィな内容が続きましたので、今回はちょっと息抜き的に、しかしながら実用的なスクリプトを作ってみたいと思います。 SLで店をやるという人は多いでしょう。 そして商品の販売用や、宣伝のために、看板を作りたいという人もいるかと思います。 綺麗なテクスチャさえ用意すれば、それなりの看板を作ることができますが、この記事は一応スクリプトの勉強ですのでw、スクリプトを使った動きのある看板に挑戦してみましょう。 照明...
  • スクリプトの構成要素は?
    LSLの構成要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素です。 ...
  • llRequestPermissions
    llRequestPermissions llRequestPermissions(key agent, integer perm) 引数agentで指定したUUIDのアバターに対して、引数permで指定したパーミッションの取得要求を出す。 パーミッション要求が出されると、アバターのクライアント上にパーミッションダイアログが表示され、許可もしくは不許可の回答を求められる。 アバターが回答するとrun_time_permissions?イベントが発生し、パーミッションが取得できたのか、それともできなかったかの判定を行うことができる。 引数permに指定可能な定数は以下の通り。 定数名 値 説明 使用可能になる関数 PERMISSION_DEBIT 2 スクリプトオーナーの所持金からの支払許可 llGiveMoney PERMISSION_TAKE_CONTROL...
  • llSetCameraParams
    llSetCameraParams llSetCameraParams(list rules) カメラを制御する。 制御用のパラメータはリスト変数に格納して引数rulesとして渡す。 引数rulesは以下の形式のリストでなければならない。 [パラメータ定数1, 値1, パラメータ定数2, 値2, . . . ] llSetCameraParams関数を使うには、カメラ制御パーミッションを取得していなければならない。 カメラ制御パーミッションは定数PERMISSION_CONTROL_CAMERAで定義されており、以下のようにして取得要求を出す。 llRequestPermissions(id, PERMISSION_CONTROL_CAMERA); 変数idはカメラ制御を行うアバターのUUIDである。 引数rulesに指定できるパラメータ定数と値...
  • llClearCameraParams
    llClearCameraParams llClearCameraParams() スクリプトで制御していたカメラのパラメータを全てリセットしてデフォルト状態に戻す。 使用する際にはPERMISSION_CONTROL_CAMERAパーミッションが必要である。 スクリプトからカメラを制御するにはllSetCameraParams関数を使う。
  • 基礎知識/LSLの構成要素は?
    LSLを構成する3つの要素 通常の台本は、シーンやカット、台詞、動作などから構成されています。 一般的にはまずシーンがあり、そのシーンに含まれるカットごとに、台詞や動作が書かれています。シーンもカットも無しに、いきなり台詞だけがポツン・・・と書かれることはありません。 【一般的な台本の構成要素】 シーン:町外れの空き地カット:楽しそうに騒いでいる猫たち台詞:にゃー 動作:笑顔で尻尾を振る カット:肩を叩かれて振り向く猫 台詞:にゃ? 動作:何気ない様子で振り向く シーン、カット、台詞・動作が階層構造になっているのがわかるかと思います。 この階層構造が崩れてしまうと台本として成り立たなくなります。 同じように、LSLにも構成要素があり、各要素は階層構造になっています。 LSLの場合は「シーン」「カット」「台詞」ではなく、「状態」「きっかけ」「処理」が構成要素...
  • llGetPermissions
    llGetPermissions integer llGetPermissions() 現在取得しているパーミッションを得る。 戻り値はビットフィールドになっているので以下の定数を使って&演算を行い、必要なパーミッションが取得されているかどうかをチェックする。 定数名 説明 対応する関数 PERMISSION_DEBIT L$の支払い権限 llGiveMoney PERMISSION_TAKE_CONTROLS キー操作取得の権限 llTakeControls?、llReleaseControls PERMISSION_TRIGGER_ANIMATION アニメーション実行権限 llStartAnimation?、llStopAnimation? PERMISSION_ATTACH アタッチ制御権限 llAttachToAvatar、llDetachFromAv...
  • llParcelMediaCommandList
    llParcelMediaCommandList llParcelMediaCommandList(list command_list) 土地に設定可能なムービーメディアのコントロールを行う。 要するにQuickTime制御用の関数である。 この関数の実行には2秒かかる。 lslWikiに従い、土地にムービーを設置する手順から説明する。 1.土地を所有すること。自分に権限のある土地でなければムービーの設置はできない。 2.ムービー用テクスチャ(メディアテクスチャ)の設定。何でもいいが、ムービー再生画面となるテクスチャを用意する。このテクスチャを貼ったオブジェクト(の面)は全てムービー再生用画面になる。 3.再生するムービーのURLを設定。ムービーはインターネット上で閲覧可能な状態でなければSL内で再生できない。自分で作ったムービーであればレンタルHPスペー...
  • 物理3D系
    物理3D系 位置 関数・イベント名 区分 概要 定義 at_target イベント オブジェクトが到達目標地点に達したとき at_target(integer tnum, vector targetpos, vector ourpos) moving_end イベント 移動が終了したとき[参考]初級lsl-22 moving_end() moving_start イベント 移動が開始されたとき[参考]初級lsl-22 moving_start() not_at_target イベント オブジェクトが到達目標地点に達していないとき not_at_target() llDetectedPos 関数 検出されたアバター/オブジェクトの位置を得る[参考]初級lsl-20 vector llDetectedPos(integer number) llEdgeOfWorld 関数 ...
  • リファレンス(機能別)
    関数 関数アバター/オブジェクト系アバター グループ オブジェクト UUID リンク イベント系タッチ アタッチ シット 衝突 センサー デテクト インターフェース系UI チャット 取引 制御系パーミッション コントロール カメラ REZ コンテンツ スクリプト 属性系面 テクスチャ 色 透明度 特殊効果系アニメーション 音 ビデオ パーティクル ビークル データ系数学 文字列 リスト 時間 データ 暗号化 土地系BAN 土地 天候 地面 物理3D系位置 回転 物理 外部機能系Email HTTP XML-RPC アバター/オブジェクト系 アバター llGetAgentInfo 指定アバターの状態を得る(飛行・AWAYなどの動作及びアタッチメントの有無等) integer llGetAgentInfo(key id) llGetAgentSize 指定アバターのサイズを得る v...
  • llPreloadSound
    llPreloadSound llPreloadSound(string sound) 引数soundで指定されたサウンドをプレロード(再生準備)する。 あくまでもサウンドを準備するだけであって再生は行われない。 サウンドがオブジェクトコンテンツ内にあれば引数soundは名前を使って指定可能。 コンテンツにないならUUIDを指定する。 この関数の実行には1秒かかる。 詳細な仕組みは知らないが、SLにおいてサウンドを耳にする場合、クライアントはサウンドデータをダウンロードしてくることになる。 これは裏方作業なので、ユーザーが通常意識することはない。 一つのサウンドが10秒までに制限されているのは、クライアントがサウンドをダウンロードする際の時間が比較的短時間で済むという理由もあるだろう。 しかしながら、10秒に制限されているとは言ってもサウンドデー...
  • llSay
    llSay llSay(integer channel, string text) 引数channelで指定したチャットチャンネルで、引数textの文字列を発言する。 この発言は半径20mの範囲に聞こえる。 発言可能な文字列の長さは1023Byteとなっている。 チャンネル0(パブリックチャンネル)を使用した場合、"/me"を使った発言が可能である。 例えばオブジェクトの名前が"爆弾ちゃん"のとき、以下のようにすると、 llSay(0, "/me がドーンとなった。"); 出力結果は以下のようになる。 爆弾ちゃんがドーンとなった。 ただしこの発言をlisten?イベントでモニタする場合、引数に入ってくる発言内容は"/me がドーンとなった。"なので注意すること。 ...
  • HUDを作ろう
    はじめに HUDのbuild ボタンのスクリプト ルートのスクリプト 今回のポイント はじめに prim間通信をもう少し練習するという意味で、今回はHUDを作ってみましょう。 HUDというのはヘッドアップディスプレイ (Head-Up Display)のことで、SLでは画面上に表示されるインターフェースのことを言います。 ミニマップなども広義の意味ではHUDになるのでしょうが、SLでは特にユーザーが独自に作ったインターフェースのことを指します。 日本人にとって馴染みのあるものは翻訳機などでしょうか。 チャットの自動英語翻訳を行ってくれるJ2Eは画面左中央に表示される半円型のHUDですね。 何のHUDを作ってもいいのですが、あんまり出回ってなくて、それでいて便利そうなものが良いですね・・・。 テレポート用HUDなどはどうでしょうか。 HUDのボタンにテレポート先...
  • llGetRegionCorner
    llGetRegionCorner vector llGetRegionCorner() グローバル座標におけるSIMの南西隅の座標を返す。 グローバル座標系とは全SIMが展開されている座標系のこと。 通常オブジェクトの位置指定などにはSIM内の座標が使用されるが、このllGetRegionCorner関数の戻り値+SIM内の座標を使用するとグローバル座標系における位置を扱うことができる。 SIMを越えて運行する乗り物などを作る際にはグローバル座標系を利用した位置管理が有用になるだろう(やったことないです。っていうかSIM複数なんて自由に扱える立場にありませんw)。 名前 ...
  • 特殊効果系
    特殊効果系 アニメーション 関数・イベント名 区分 概要 定義 llGetAnimation 関数 指定アバターが実行中の基本アニメーションを得る string llGetAnimation(key id) llGetAnimationList 関数 指定アバターが実行中の全アニメーションを得る[参考]初級lsl-13 list llGetAnimationList(key id) llStartAnimation 関数 アニメーションを開始する[参考]初級lsl-13 llStartAnimation(string anim) llStopAnimation 関数 アニメーションを停止する[参考]初級lsl-13 llStopAnimation(string anim) 音 関数・イベント名 区分 概要 定義 llAdjustSoundVolume 関数 サウンドのボリュー...
  • ステートのこと
    はじめに ステートの復習 ステートの使いどころ ステートとグローバル変数グローバル変数 ステートの注意点 今回のポイント はじめに 今回はスクリプトの構成について少し突っ込んだ話をします。 具体的に実用性のあるスクリプトは出てきませんが、自分で1からスクリプトを書こうというとき、構成をどうするか考える際の参考にしていただければと思います。 このwikiの記事では、最初の頃にスクリプトの構成について触れました。 「ステート」「イベント」「処理」の3つの要素で成り立っているという話です。 私はこの3つがスクリプトの基本要素であると説明し、スクリプトを書く際には作ろうとしている機能がどんな「ステート」「イベント」「処理」になるのか意識すると良いと書いてきましたが、実際には「ステート」がどんな時に登場するのか、いまひとつハッキリしないという方もいらっしゃるのではないで...
  • 回転について
    はじめに 回転を扱うプログラミングは、初めての人には少々敷居の高いものです。 何故なら回転は3Dグラフィックの知識がないと理解しにくく、例えばπ(パイ)とか三角関数のように、学校の数学で習うようなものではないからです。 まったく予備知識がない状態で回転の処理に取り組むのは、非常に難解なパズルに挑むのに似ています。 そう、例えばルービックキューブを独力で解ける人なら、回転プログラムも簡単に理解できるかもしれません(^^; ある程度LSLを使いこなしている人であっても、 「回転だけは・・・」 苦手意識を持っている人も少なくないくらいです。 私が受ける質問の中でも、回転関連のものはかなり多いです。 そんなわけで、ハッキリ言って回転は難しいです(^^; にもかかわらず回転を使わないといけない場面というのは非常に多いのです。 例えば単純なドアを作るのにも、回転は出てきま...
  • リファレンス(名前順)
    A llAbs integer型の絶対値を得る integer llAbs(integer val) llAcos アークコサインを得る float llAcos(float val) llAddToLandBanList 土地からアバターをBANする llAddToLandBanList(key agent, float hours) llAddToLandPassList 土地の通行許可をアバターに与える llAddToLandPassList(key agent, float hours) llAdjustSoundVolume サウンドのボリュームを調整する llAdjustSoundVolume(float volume) llAllowInventoryDrop インベントリへのドロップを許可(あるいは非許可に)する llAllowInventoryDrop(inte...
  • llMD5String
    llMD5String string llMD5String(string src, integer nonce) 文字列srcをMD5(Message Digest Algorithm 5)でハッシュ値に変換する。 MD5とはハッシュ値を作成するためのある処理方式の名前。 しばしば、ダウンロードデータ等が改ざんされて無いかどうかを判定するために使われる。 詳しいことをここで説明するのは少々筋違いなので興味のある方は調べてみて下さい。 あくまでも関数の機能として述べるなら、llMD5String関数は文字列srcを"2cfa746974210d68e96ee620bf842fb6"のようなデータ(ハッシュ値)に変換する。 変換後のデータ(ハッシュ値)から元の文字列を求めることは出来ない。 ...
  • llSetColor
    llSetColor llSetColor(vector color, integer face) 引数faceで指定した面の色を引数colorで指定した色にする。 色の指定はvector型で行うが、値の範囲は 0.0, 0.0, 0.0 ~ 1.0, 1.0, 1.0 となる。 3つの要素のうち先頭からRed、Green、Blueの色要素の指定となっている。 Webページ等の色指定で一般的なRGB形式は0~255の範囲で色要素の強さを指定するが、LSLでは0.0~1.0の範囲なので注意すること。 0~255の色要素をLSL用に変換するには、255で割り算してやれば良い。 一般的なRGB形式の指定値との対比を参考までに掲載しておく。 0~255 16進数 LSL 0 0 0 64 40 0.25 128 80 0.5 192 C0 0.75 255 FF 1...
  • llCSV2List
    llCSV2List list llCSV2List(string src) CSV形式の文字列をリスト型に変換する。 CSVとはComma Separated Valuesの略で、Excel好きな方にはお馴染みのアレである。 つまりカンマ区切りの文字列をリストに変換する関数である。 ただし変換された要素は全て文字列型になることに注意。 "a","b","c","d" → ["a","b","c","d"] 1,2,4,8 → ["1","2","4","8"] 1,2,3 , 4,5,6 , 7,8,9 → [&qu...
  • llForceMouselook
    llForceMouselook llForceMouselook(integer mouselook) primに座ったアバターが強制的にマウスルックモードになるよう設定/設定解除する。 引数mouselookにTRUEを指定すると、そのprimに座ったアバターは強制的にマウスルックモードになる。 FALSEであればマウスルックモードにはならない(マウスルックモードの変更は行わない)。 すでに座っているアバターの視界をコントロールすることはできない。 座ったアバターをマウスルックモードにしたい場合は、あらかじめllForceMouselook(TRUE);を実行しておく必要がある。 一度この関数を使って強制マウスルックをONにした場合は、llForceMouselook(FALSE);を実行するまでその設定は有効である。 なお、この関数を使ったからといっ...
  • 基礎知識/SL世界の法則
    ここではSLの世界に特有な法則や決まりごとについての解説を行います。 例えばSLの世界には物理法則が存在しますが、その法則はリアルワールドのものとは異なっています。 他にも、SLを構成するprimについての話やテクスチャやサウンドなど、随時追加予定です。 アバター/オブジェクト アバター UUID チャット? シット? パーミッション? アタッチメント? キーコントロール? UI? カメラ? グループ? プリム/オブジェクト 面? テクスチャ? 色/透明度? リンク? Rez? UUID アイテム コンテンツ/インベントリ? アイテム アニメーション? サウンド? テクスチャ? ランドマーク? スクリプト? ワールド 座標系 位置? 回転 SIM セキュリティ? 天候? 地面? 物理 エネルギー? 加速度? フォース? インパルス...
  • llApplyImpulse
    llApplyImpulse llApplyImpulse(vector force, integer local) 物理オブジェクトに瞬間的な力を加える。 力の方向及び強さは引数forceで指定する。 引数localがTRUEの場合、forceはオブジェクトのローカル軸に対して働き、FALSEの場合はグローバル座標に対して働く。 物理オブジェクトに力を加える関数としては、大別してこのllApplyImpulse関数とllSetForce?関数の二つがある。 この二種類の関数の違いは、加える力が瞬間的か恒久的かの違いである。 インパルス系の関数は、瞬間的な力である。 例えばゴルフボールをグラブで引っぱたいたような場合、ボールに加えられる力は瞬間的なものであって、その後ボールは徐々にエネルギーを失い、落下する。 フォース系の関数は恒久的な力である。 ロケ...
  • llApplyRotationalImpulse
    llApplyRotationalImpulse llApplyRotationalImpulse(vector force, integer local) 物理オブジェクトに瞬間的な回転力を加える。 回転の方向及び強さは引数forceで指定する。 引数localがTRUEの場合、forceはオブジェクトのローカル軸に対して働き、FALSEの場合はグローバル座標に対して働く。 物理オブジェクトに回転力を加える関数としては、大別してこのllApplyRotationalImpulse関数とllSetTorque?関数の二つがある。 この二種類の関数の違いは、加える回転力が瞬間的か恒久的かの違いである。 インパルス系の関数は、瞬間的な力である。 例えばコマの回転のように、最初に勢いよく回転力を与えた後は、徐々に勢いがなくなって停止する。 トルク系の関数は恒久...
  • パーティクル
    パーティクルとは パーティクル関数(llParticleSystem関数) パーティクルモジュールパラメータの説明マスク・パラメータ パターン・パラメータ その他詳細パラメータ 応用編 パーティクルとは 小技というわけではありませんが、パーティクルシステムについては設定すべきパラメータが非常に多く、わかりにくいという声をしばしば聞きます。 ですので今回はパーティクルシステムの解説とサンプル・スクリプトを書いておくことにします。 パーティクルとは粒子のことです。 SLのパーティクルシステムは、煙や火、水しぶきなどの粒子を表現するための仕組みのことを言います。 スクリプトを使う以外にパーティクルを制御する方法はありません。 従って、粒子を使った表現をしようと思ったら、パーティクルシステムのスクリプトを使わなければなりません。 よく見かけるパーティクルを列...
  • llRequestSimulatorData
    llRequestSimulatorData key llRequestSimulatorData(string simulator, integer data) 引数simulatorに指定した名前のSIMの情報の取得要求を出す。 SIM名は大文字・小文字を区別せずに指定可能だが、似たような名前のSIMが他にあると、間違ったSIMの情報を返してくることがあるらしい。なので正確に指定するべきである。 情報が取得できるとdataserver?イベントが発生する。 その際、llRequestSimulatorData関数の戻り値が識別キーとして通知されるので、戻り値は忘れないよう控えておくこと。 要求する情報は引数dataで指定する。 dataには以下の値を指定できる。 定数名 値 説明 DATA_SIM_POS 5 SIMのグローバル座標をvector...
  • 基礎知識/アバター
    アバターとはSLユーザーが操作するキャラクターのことを指します。 広義にはSLユーザーやアカウントまでも含めて「アバター」という言葉を使うこともありますが、通常はSL画面に表示される人型(稀に人型ではないヤツもいますがw)のキャラクターのことを言います。 アバターは固有の名前を持っていますが、通常の場合LSLではUUIDで識別されます。 名前についてはファーストネーム(名前)とセカンドネーム(苗字)があり、ファーストネームのほうはユーザーが自由につけることができます。 セカンドネームはリンデンが用意したものの中から一つを選ぶようになっています。 ファーストネームが同じアバターというのは存在しますが、ファーストネーム+セカンドネームとなると必ず固有の名前になります。 UUID UUIDとは (Universal Unique IDentifier)の略で、SL内のあら...
  • rez!
    はじめに rezするllRezObject rezされるon_rez?(integer param) temp rezスクリプト 今回のポイント はじめに 初級者向けに説明すべきことはもはやほとんど残っていません(^^; もちろん、lslに関してはまだまだ膨大な機能があり、触れていない部分は多いのですが、あくまでも「初級」ということであれば、残っているのは今回扱うrezを含めて2、3の項目くらいかと思います。 ちなみに今まで一切触れてこなかった機能として、物理系のスクリプトがあります。 物理系のスクリプトとは、SL内の物理的なオブジェクトを扱うための関数群のことです。 例えば加速させたり、重力を無くしたり、コマのように回転する力を加えたりできるのですが、これらの関数についてはスクリプトの知識というよりはSL内物理学の知識が必要になってきますので、初級者向けの対象外と...
  • @wiki全体から「フロー制御とは?」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索

記事メニュー
目安箱バナー