言語はLua豊富なAPI関数により楽にシミュレーションを行える。Scriptsのアイコンが表示されます。コレをダブルクリックすることでスクリプトの編集ができます。命令は親子関係なくシーン内全てのオブジェクトを対象に行えます。同じ命令が親と子にあった場合には、子の命令が優先されます。同じハンドルのjointに対して親が「停止」、「子」が「回転」の命令を出したときjointは回転します。thenの外に書いた命令は実行されなくなれました。このようにsim_call_typeでフラグ管理をしています。then--初期化命令文end初期化命令文には変数の初期化やオブジェクトハンドルの取得を行うスクリプトを書きましょう。それぞれのsim_call_typeの説明は次の通りです。sim_childscriptcall_initialization初期化フェーズで、チャイルドスクリプトが初めて呼び出された時のみ実行されます。これはシミュレーション開始時ではなく、あくまでチャイルドスクリプトが呼び出された時であることに注意して下さい。scriptが関連付けられたオブジェクトを増やすことができ、その初期化を行えることを示しています。sim_childscriptcall_actuation動作フェーズで、ステップ毎に毎回実行されます。物体の動作に関するコードを記述します。sim_childscriptcall_sensing感知フェーズで、ステップ毎に毎回、動作フェーズの後に実行されます。センサーに関するコードを記述します。フェーズ→動作フェーズ→感知フェーズ→動作フェーズ→感知フェーズ...→終了フェーズ便利機能ハンドル取得時にオブジェクト名の#以降を考慮した振る舞いをするsimGetObjectHandle(‘Object_name’)でオブジェクトハンドルを取得するときに、スクリプト名に「#数値」が付いている場合には’Object_nam’eに「#数値」があるものとして処理します。次のようなシーン中でdodai#0のスクリプトにsimGetObjectHandle('joint')1simGetObjectHandle('joint')と記述すればdodai#0の子のjoint#0のオブジェクトハンドルを取得できます。これはそれぞれの異なる数値の「#数値」付きオブジェクトが親子関係になっていても同様です。このおかげで、コピーした際にオブジェクト名の重複することなく同じスクリプトを使い回せるという利点が生まれます。明示的にsimGetObjectHandle(‘Object_name#1’)のように「#数値」を含めた書き方をすれば、スクリプト名に関係なく指定したオブジェクトハンドルを取得します。子のスクリプトに値を渡せる親から指定した値を、子の変数に代入することが出来ます。次のようなスクリプトを記述することで行えます。thenhensu=...endここでは親から数値5をこの変数hensuに格納しています。子側の「=...」は必須です。複数受け取る場合は「hensu1,hensu2,hensu3=...」の様にカンマ区切りで列挙すれば可能です。コメントデータの処理方法の詳細はこちらをご覧ください。