; ; HSP help manager用 HELPソースファイル ; (先頭が「;」の行はコメントとして処理されます) ; %type 拡張命令 %ver 3.4 %note obaq.asをインクルードすること。 %date 2014/04/24 %author onitama %dll obaq %url http://hsp.tv/ %port Win %group 拡張入出力制御命令 %index qreset OBAQ初期化 %inst OBAQが持つ、すべての情報が初期化されます。 qreset命令により初期化を行なうと、画面全体を囲む壁(枠)が自動的に設定されます。 壁のサイズや位置を変更したい場合は、qborder命令により再設定を行なってください。 qreset実行時に、HSPの描画対象として設定されていたウィンドウが、OBAQでも描画の対象となります。 描画の対象となるウィンドウを変更する場合には、qview命令を使用してください。 %href qview qborder qterm %index qterm OBAQ終了処理 %inst OBAQが持つ、すべての情報を破棄します。 プログラム終了時などに内部で呼び出されます。 通常は呼び出す必要はありません。 %href qreset %index qexec OBAQフレーム処理 %inst フレームごとの物理演算を実行します。 これにより、すべてのオブジェクト座標が更新されます。 メインループでは、必ずqexec命令によりオブジェクトの移動更新を行なう必要があります。 また、内部の描画を利用する場合は、qdraw命令による画面の更新も必要になります。 %href qdraw %index qdraw OBAQ描画処理 %prm mode mode(0) : デバッグ表示モード設定(0=ON/1=OFF) %inst OBAQによるオブジェクトの描画処理を行ないます。 それぞれのオブジェクトに設定されたマテリアル情報をもとに、適切な表示を行ないます。 modeの設定により、デバッグ表示のON/OFFを設定することができます。 デバッグ表示時は、ワイヤーフレームによるオブジェクトの形状や中心位置、グループなどを確認することができます。 表示先ウインドゥの変更や、表示倍率、表示位置オフセットの設定はqview命令を使用してください。 qdraw命令による描画は、WindowsのシステムAPI(GDI)を利用していますので、 画面クリアと、redraw命令による更新も行なう必要があります。 他のシステムによる描画(DirectX等)を行なう場合は、qexec命令による更新だけを行なってから、 各オブジェクトの表示位置を自前で取得して描画を行なう必要があります。 (表示座標の変換用にqcnvaxis命令やqgetaxis命令が用意されています。) %href qview qexec qcnvaxis qgetaxis %index qview ビュー設定 %prm zoomx,zoomy,ofsx,ofsy zoomx(4.0) : X方向のズーム倍率(実数) zoomy(4.0) : Y方向のズーム倍率(実数) ofsx(0.0) : X方向の表示オフセット(実数) ofsy(0.0) : Y方向の表示オフセット(実数) %inst qdraw命令により描画される際の表示設定を行ないます。 zoomx,zoomyにより表示倍率(OBAQの内部座標を画面に反映させる際の倍率)を設定します。 ofsx,ofsyにより、表示位置のオフセットを設定することができます。 また、qview実行時に、HSPの描画対象として設定されていたウィンドウが、描画の対象として再設定されます。 %href qdraw qreset %index qsetreq システムリクエスト設定 %prm reqid,val reqid(0) : リクエストID val(0.0) : 設定値(実数) %inst OBAQに対して様々なシステム設定を行ないます。 reqid値で指定できるのは以下のシンボルです。 ^p シンボル名 内容 ------------------------------------------------------------------------ REQ_PHYSICS_RATE 1フレームあたりの物理計算回数 REQ_MAXOBJ オブジェクト最大数(512以内)(*) REQ_MAXLOG コリジョンログ最大数(*) REQ_DEFAULT_WEIGHT デフォルトの重さ REQ_DEFAULT_MOMENT デフォルトのモーメント REQ_DEFAULT_FRICTION デフォルトの摩擦 (*)のシンボルは、qreset命令実行まで内容が反映されません。 ^p %href qgetreq %index qgetreq システムリクエスト取得 %prm var,reqid var : 内容を取得する変数 reqid(0) : リクエストID %inst OBAQのシステム設定値を取得します。 varで指定された変数に内容を読み出します。 varの変数は、自動的に実数型に設定されます。 reqid値で指定できるのは以下のシンボルです。 ^p シンボル名 初期値 内容 ------------------------------------------------------------------------------ REQ_PHYSICS_RATE 4 1フレームあたりの物理計算回数 REQ_MAXOBJ 512 オブジェクト最大数(512以内)(*) REQ_MAXLOG 256 コリジョンログ最大数(*) REQ_DEFAULT_WEIGHT 6.0 デフォルトの重さ REQ_DEFAULT_MOMENT 1200.0 デフォルトのモーメント REQ_DEFAULT_FRICTION 1.0 デフォルトの摩擦 (*)のシンボルは、qreset命令実行まで内容が反映されません。 ^p %href qsetreq %index qborder 外壁を設定 %prm x1,y1,x2,y2 x1(-100) : 左上X座標(実数) y1(-100) : 左上Y座標(実数) x2(100) : 右下X座標(実数) y2(100) : 右下Y座標(実数) %inst 標準的に設定されている外壁のサイズを再設定します。 画面の中央を(0,0)として、左上と右下の座標(OBAQの内部座標)を指定してください。 外壁は、何も壁のない状態で画面内にオブジェクトを配置した際に、 画面外まで落下するのを防ぐためのものです。 %href qreset %index qgravity 重力を設定 %prm gx,gy gx(0.0) : X方向の重力(実数) gy(0.005) : Y方向の重力(実数) %inst 空間の重力を設定します。 初期値は、(0,0.005)が設定されています。 %href qreset %index qcnvaxis X,Y座標値を変換 %prm var_x,var_y,x,y,opt var_x : Xを取得する変数 var_y : Yを取得する変数 x(0.0) : 変換元のX座標(実数) y(0.0) : 変換元のY座標(実数) opt(0) : 変換モード %inst X,Y座標値を指定された方法に従って変換します。 変換元の座標を(x,y)で指定すると、var_x,var_yにそれぞれ変換済みのX,Y座標値が代入されます。 optで指定する変換モードは、以下の値を選ぶことができます。 ^p 変換モード 内容 ------------------------------------------------------------------------ 0 内部座標を画面上の座標に変換 1 画面上の座標を内部座標に変換 ^p 変換モード0(または省略時)は、内部座標をqdraw命令で表示される画面上の座標に変換します。(var_x,var_yは整数型に設定されます。) 変換モード1は、qdraw命令で表示される画面上の座標を内部座標に変換します。(var_x,var_yは実数型に設定されます。) %href qgetaxis %index qgetaxis 内部座標を取得 %prm num,var_x,var_y,type num(0) : オブジェクトID var_x : Xを取得する変数 var_y : Yを取得する変数 type(0): 取得タイプ %inst OBAQのオブジェクトが持つ内部座標及び表示パラメーターを変数に読み出します。 var_x,var_yは整数型として自動的に設定されます。 typeで指定できる内容は以下の通りです。 ^p 取得タイプ 内容 ------------------------------------------------------------------------ 0 オブジェクトの左上座標 1 オブジェクトの右下座標 2 オブジェクトのX,Yサイズ(*) (*)のシンボルは、表示画面上でのサイズ(ドット数)が返されます ^p %href qcnvaxis %index qdel オブジェクト削除 %prm num num(0) : オブジェクトID %inst 指定されたオブジェクトを削除します。 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qaddpoly qaddmodel %index qaddpoly 多角形オブジェクト追加 %prm var,shape,x,y,r,sx,sy,colsw,mygroup,exgroup,loggroup var : オブジェクトIDを取得する変数 shape(3) : 頂点数 x(0.0) : 配置X座標(実数) y(0.0) : 配置Y座標(実数) r(0.0) : 配置角度(実数)(単位はラジアン) sx(10.0) : 配置Xサイズ(実数) sy(10.0) : 配置Yサイズ(実数) colsw(1) : 配置チェックのモード mygroup(1) : 自分が属するコリジョングループ exgroup(0) : 衝突を除外するグループ loggroup(0) : コリジョンログを作成するグループ %inst OBAQに多角形オブジェクトを追加します。 shapeで指定された頂点を持つオブジェクトが生成されます。 (shapeの頂点数は3以上でなければなりません。) (x,y)で配置の座標を指定します。(OBAQの内部座標を設定します。) rで配置角度(+方向が時計周りになります)を指定します。単位はラジアンとなります。 (sx,sy)で、配置時の大きさを指定します。デフォルトでは、(10,10)のサイズが使用されます。 mygroup,exgroup,loggroupはコリジョン(衝突)の検出のために設定されるグループ値になります。 グループ値は、32bitいずれかのビットが1の値(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768…)によって示されます。 colswで配置チェックのモードを選択することができます。 ^p モード 値 内容 ------------------------------------------------------------------------ colsw_none 0 出現時コリジョンチェック無し colsw_active 1 出現時active状態の岩との接触を避ける colsw_all 2 出現時reserve状態以外の岩との接触を避ける ^p オブジェクトが正常に追加された時には、varで指定された変数にオブジェクトID値が代入されます。(変数は自動的に整数型となります。) 登録数の限界でオブジェクトの追加が行なわれなかった場合は、varで指定された変数に-1が代入されます。 コリジョン(衝突)検出のためオブジェクトの追加が行なわれなかった場合は、varで指定された変数に-2が代入されます。 %href qaddmodel %index qaddmodel 自由設定オブジェクト追加 %prm var,shape_var,nvertex,x,y,r,sx,sy,colsw,mygroup,exgroup,loggroup var : オブジェクトIDを取得する変数 shape_var: 形状データを代入した配列変数 nvertex(-1) : 形状データの個数 x(0.0) : 配置X座標(実数) y(0.0) : 配置Y座標(実数) r(0.0) : 配置角度(実数)(単位はラジアン) sx(10.0) : 配置Xサイズ(実数) sy(10.0) : 配置Yサイズ(実数) colsw(1) : 配置チェックのモード mygroup(1) : 自分が属するコリジョングループ exgroup(0) : 衝突を除外するグループ loggroup(0) : コリジョンログを作成するグループ %inst OBAQに自由設定された形状のオブジェクトを追加します。 一般的な多角形は、qaddpoly命令によって生成することができます。 qaddmodel命令では、頂点を個別に指定することでより自由な形を登録することができます。 shape_varに、形状データを代入した配列変数を指定する必要があります。 配列変数には、x1,y1,x2,y2…の順番に座標を格納しておいてください。 座標は、必ず左回り(反時計回り)で指定し、凸面体でなければなりません。 1つのオブジェクトに複数の凸面体を内包させることも可能です。 その場合は、左回りで指定する座標の最後を、最初の座標と同一にして閉じた形にした後で、 新しい別な形の座標を指定するようにしてください。 ^ nvertexでデータの個数(頂点の個数ではありません)を指定します。 nvertexがマイナス値か省略された場合は、配列に設定された要素数が使用されます。 形状データを格納した配列変数には、実数型、整数型のどちらかを使用できます。 規定の頂点数を超えるデータを扱うことはできませんので注意してください。詳しくは、OBAQ.DLLのマニュアルを参照してください。 ^p ; 自由な形状のモデルを追加 ; model=-1.0,-1.0, -1.0,2.0, 2.0,1.0, 1.0,-1.0 qaddmodel i,model,-1, 30,64,0 ^p (x,y)で配置の座標を指定します。(OBAQの内部座標を設定します。) rで配置角度(+方向が時計周りになります)を指定します。単位はラジアンとなります。 (sx,sy)で、配置時の大きさを指定します。デフォルトでは、(10,10)のサイズが使用されます。 mygroup,exgroup,loggroupはコリジョン(衝突)の検出のために設定されるグループ値になります。 グループ値は、32bitいずれかのビットが1の値(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768…)によって示されます。 colswで配置チェックのモードを選択することができます。 ^p モード 値 内容 ------------------------------------------------------------------------ colsw_none 0 出現時コリジョンチェック無し colsw_active 1 出現時active状態の岩との接触を避ける colsw_all 2 出現時reserve状態以外の岩との接触を避ける ^p オブジェクトが正常に追加された時には、varで指定された変数にオブジェクトID値が代入されます。(変数は自動的に整数型となります。) 登録数の限界でオブジェクトの追加が行なわれなかった場合は、varで指定された変数に-1が代入されます。 コリジョン(衝突)検出のためオブジェクトの追加が行なわれなかった場合は、varで指定された変数に-2が代入されます。 %href qaddpoly %index qtype typeパラメーターを設定 %prm num,type,option num(0) : オブジェクトID type(0) : 設定値 option(0) : 設定オプション %inst 指定したオブジェクトのtypeパラメーターを設定します。 typeパラメーターには、以下の内容を指定することができます。 ^p マクロ名 値 内容 ----------------------------------------------------------- type_normal 0 通常のオブジェクト type_inner 1 接触判定を反転したオブジェクト type_bindX 0x40 X軸を背景に固定 type_bindY 0x80 Y軸を背景に固定 type_bindR 0x100 回転を固定 type_bind 0x1c0 背景に完全固定(物理挙動なし) type_autowipe 0x100000 ボーダー範囲を越えたら自動的に消去 ^p type_innerは、外壁を作成する際に使用します。 デフォルトの壁(qborder命令で作成される形状)に使用されていますが、 この用途以外では使用しないよう注意してください。 type_autowipeは、qborder命令で設定したボーダー領域(枠)の範囲を出たオブジェクトを自動的に消去するためのフラグです。 ^ optionで、type値の設定方法を指定することができます。 ^p option 内容 ------------------------------------------------------------------------ 0 type値をセット(set) 1 type値を追加(or) 2 type値を除外(not) ^p 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgettype qborder %index qstat statパラメーターを設定 %prm num,stat,sleepcount num(0) : オブジェクトID stat(0) : 設定値 sleepcount(0) : スリープカウント値 %inst 指定したオブジェクトのstatパラメーター、及びスリープカウント値を設定します。 statパラメーターには、以下の内容を指定することができます。 ^p マクロ名 値 内容 ------------------------------------------------------------------- stat_reserve 0 未使用オブジェクト stat_sleep 1 出現待ちオブジェクト stat_active 2 出現しているオブジェクト ^p optionで、type値の設定方法を指定することができます。 スリープカウント値は、statにstat_sleepを指定している際に参照される値です。 stat_sleepになっているオブジェクトは、スリープカウント値の回数だけ点滅して 出現します。(スリープカウント値が0の場合は、出現せず準備状態を維持します。) ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetstat %index qpos 位置、角度パラメーターを設定 %prm num,x,y,angle num(0) : オブジェクトID x(0.0) : X座標設定値(実数) y(0.0) : Y座標設定値(実数) angle(0.0) : 角度設定値(実数)(ラジアン) %inst 指定したオブジェクトの位置、角度パラメーターを設定します。 (x,y)でオブジェクトの基準となる位置(中心座標)を指定します。 angleでオブジェクト回転角度(+方向が時計周り)を指定します。単位はラジアンとなります。 OBAQでは、基本的に物体を動かす場合でも、直接物体の座標を 変更するのではなく動かしたい方向に力を加えたり、qgetspeed命令により 加速度を設定することで実現してください。 強制的に座標を変更した場合には、正しい物理挙動にならない可能性があります。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetpos %index qspeed 速度パラメーターを設定 %prm num,px,py,pr,option num(0) : オブジェクトID px(0.0) : X方向設定値(実数) py(0.0) : Y方向設定値(実数) pr(0.0) : 回転速度パラメーター(実数) option(0) : 設定オプション %inst 指定したオブジェクトの速度パラメーターを設定します。 (px,py)でオブジェクトのX,Y方向に対する移動速度を指定します。 prで回転に対する速度を指定します。 optionで、設定方法を指定することができます。 ^p option 内容 ------------------------------------------------------------------------ 0 速度値を加算(add) 1 速度値×2を上書き(set) 2 速度値を上書き(set) ^p 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 option(設定オプション)値が2の場合は、指定された値が設定されます。 option(設定オプション)値が1の場合は、指定された値の2倍が設定されますので注意してください。 %href qgetspeed %index qweight 重さなどのパラメーターを設定 %prm num,weight,moment num(0) : オブジェクトID weight(6.0) : 重さの値(実数) moment(1200.0) : モーメント値(実数) %inst 指定したオブジェクトの重さ、モーメント、摩擦などのパラメーターを設定します。 weight(重さ)は、半径rの円に標準的な比重の場合、 ^p (r ^ 2) / 32.0 ^p くらいを目安に設定してください。 moment(モーメント)は、回転のしやすさに関わるパラメーターだと考えて下さい。 ^p 半径rの円盤: weight * (r ^ 2) / 2.0 辺の長さがa, bの長方形 : weight * ((a ^ 2) + (b ^ 2)) / 12.0 ^p のような値を目安に設定してください。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetweight %index qdamper 吸振などのパラメーターを設定 %prm num,damper,friction num(0) : オブジェクトID damper(0.7) : 吸振パラメーター値(実数) friction(1.0) : 摩擦抵抗値(実数) %inst 指定したオブジェクトの吸振、惰性、重力係数などのパラメーターを設定します。 damper(吸振)は、接触した際のゆれを抑える力を示しています。 0.0から1.0までの値を設定するようにしてください。(範囲チェックは行なわれません) friction(摩擦)は、物体同士が接触した時に減衰する力の係数になります。 接触する物体のfrictionと乗算した値が参照され計算されます。 0.0から1.0までの値を設定するようにしてください。(範囲チェックは行なわれません) ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetdamper %index qinertia 惰性などのパラメーターを設定 %prm num,inertia,gravity num(0) : オブジェクトID inertia(0.999) : 惰性パラメーター値(実数) gravity(1.0) : オブジェクトの重力値(実数) %inst 指定したオブジェクトの惰性、重力係数などのパラメーターを設定します。 inertia(惰性)は、0.0に近づくほど抵抗が発生してねっとりした動きに なります。0.0から1.0までの値を設定するようにしてください。(範囲チェックは行なわれません) gravity(オブジェクトの重力)は、空間に設定されている重力に乗算される形で オブジェクトのみに反映されます。 特定のオブジェクトだけに、異なる重力を与える場合に使用します。 現実にはありえない形で、特定のオブジェクトだけに無重力や反重力を与えるため、ゲームなどのキャラクター制御に有効です。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetinertia %index qgroup グループパラメーターを設定 %prm num,mygroup,exgroup,loggroup num(0) : オブジェクトID mygroup(1) : 自分が属するコリジョングループ値 exgroup(0) : 衝突を除外するグループ値 loggroup(0) : コリジョンログを作成するグループ値 %inst 指定したオブジェクトのグループパラメーターを設定します。 グループパラメーターは、衝突する相手オブジェクトを特定する場合などの識別に使用されます。 グループ値は、32bitいずれかのビットが1の値(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768…)によって示されます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetgroup qfind qcollision %index qmat マテリアルパラメーターを設定 %prm num,type,id,subid num(0) : オブジェクトID type(0) : マテリアルタイプ値 id(0) : 参照id値 subid(0) : 参照subid値 %inst 指定したオブジェクトのマテリアルパラメーターを設定します。 マテリアルパラメーターは、qdraw命令による描画時に反映されます。 マテリアルタイプ値により、表示方法を選択することができます。 ^p タイプ 値 内容 ------------------------------------------------------------------- mat_none 0 何もしない(非表示) mat_spr 1 スプライト mat_spr2 2 スプライト(サイズ設定付き) mat_wire 3 ワイヤーフレーム mat_wire2 4 ワイヤーフレーム(輪郭付き) mat_delay 0x1000 後から描画 ^p スプライトは、形状全体をカバーする形で矩形が貼り付けられます。 ワイヤーフレームの場合は、それぞれの頂点を線で繋ぎます。 mat_spr、mat_spr2を選択した場合は、idにスプライトとして表示する 画像のウィンドウID、subidに分割画像No.を指定します。 ウィンドウIDと分割画像No.は、celput命令で使用されるパラメーターと 同様で、素材となる画像をceldiv命令によって分割したものを参照することができます。 mat_wireまたは、mat_wire2を選択した場合は、idでワイヤーの色コード (RGBをパックした24bit値)、subidで輪郭の色コードを設定します。 マテリアルタイプ値に、mat_delay(0x1000)を加算したオブジェクトは、 後から描画されるようになります。 これは、半透明を使った表示などで利用することができます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetmat qmat2 qmat3 %index qmat2 マテリアル詳細パラメーターを設定 %prm num,offsetx,offsety,zoomx,zoomy num(0) : オブジェクトID offsetx(0) : X方向表示オフセット offsety(0) : Y方向表示オフセット zoomx(1.0) : X方向表示倍率(実数) zoomy(1.0) : Y方向表示倍率(実数) %inst 指定したオブジェクトのマテリアル詳細パラメーターを設定します。 マテリアル詳細パラメーターは、qdraw命令による描画時に反映されます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetmat2 qmat qmat3 %index qmat3 マテリアル表示パラメーターを設定 %prm num,gmode,rate num(0) : オブジェクトID gmode(0) : コピーモード rate(256): 半透明レート %inst 指定したオブジェクトのマテリアル表示パラメーターを設定します。 マテリアル表示パラメーターは、qdraw命令による描画時に反映されます。 gmodeは、スプライトを描画する際のコピーモードを指定します。 これは、HSPのgmode命令で指定されるモード値と同じです。 また、rate(半透明レート)も同様にgmode命令で指定された場合と同じ結果になります。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href gmode qgetmat3 qmat qmat2 %index quser ユーザー定義データを設定 %prm num,user1,user2,user3 num(0) : オブジェクトID user1(0) : ユーザー定義データ1 user2(0) : ユーザー定義データ2 user3(0) : ユーザー定義データ3 %inst 指定したオブジェクトのユーザー定義データを設定します。 ユーザー定義データは、オブジェクトごとに保存可能な値で、何に使用するかはユーザーが自由に決めることができます。 ユーザー定義データ1〜3は、整数型の値を格納することができます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetuser quser2 %index quser2 ユーザー定義データを設定2 %prm num,user4,user5,user6 num(0) : オブジェクトID user4(0.0) : ユーザー定義データ4(実数) user5(0.0) : ユーザー定義データ5(実数) user6(0.0) : ユーザー定義データ6(実数) %inst 指定したオブジェクトのユーザー定義データを設定します。 ユーザー定義データは、オブジェクトごとに保存可能な値で、何に使用するかはユーザーが自由に決めることができます。 ユーザー定義データ4〜6は、実数型の値を格納することができます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgetuser2 quser %index qfind オブジェクト検索 %prm group,stat group(-1) : 検索するグループ値 stat(0) : stat値指定 %inst 登録されているオブジェクトを任意の条件で検索します。 最初に、qfind命令で条件を指定した後、qnext命令で結果を受け取る必要があります。 groupで検索するコリジョングループ値を指定します。 groupの指定を省略するか-1の場合は、すべてのグループが対象となります。 (ただしグループ値が0のオブジェクトは除外されます) 複数のグループを指定する場合は、それぞれのグループ値を足した値を指定してください。 statを指定することで、特定の状態だけを検索することが可能です。 statが0の場合は、すべての状態が対象となります。 statにstat_sleep(1)またはstat_active(2)を指定した場合は、同じ値を持つオブジェクトのみが対象となります。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qnext %index qnext オブジェクト検索結果取得 %prm var var : 検索結果を取得する変数 %inst qfind命令による検索の結果を取得します。 最初に、qfind命令で条件を指定した後、qnext命令で結果を受け取る必要があります。 varで指定された変数にオブジェクトID値が代入されます。(変数は自動的に整数型となります。) qnext命令を実行するごとに、検索結果を取り出すことができます。 検索結果がなくなった場合は、-1が代入されます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qfind %index qcollision コリジョン取得開始 %prm num, target num(0) : オブジェクトID target(-1) : コリジョンを取得する対象のオブジェクトID %inst オブジェクト同士のコリジョン(衝突)に関する情報の取得を開始します。 最初に、qcollision命令でオブジェクトを指定した後、qgetcol命令で結果を受け取る必要があります。 targetで、コリジョンを取得する対象のオブジェクトIDします。 targetが-1か、省略された場合は、numで指定されたオブジェクトに関わるすべての情報が取得されます。 コリジョンの取得を行なう際には、必ずコリジョングループの設定を行なっておく必要があります。 numで指定されたオブジェクトのパラメーターで、コリジョンログ作成グループとなっているものだけが取得されるので注意してください。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgroup qgetcol qgetcol2 qgetcol3 %index qgetcol コリジョン取得 %prm var_id,var_x,var_y var_id : オブジェクトIDを取得する変数 var_x : X座標を取得する変数 var_y : Y座標を取得する変数 %inst qcollision命令による検索の結果を取得します。 最初に、qcollision命令で条件を指定した後、qgetcol命令で結果を受け取る必要があります。 さらに必要に応じて、qgetcol2命令、qgetcol3命令で追加の情報を取得することが可能です。 var_idで指定された変数に、コリジョンが検出されたオブジェクトのID値が代入されます。(変数は自動的に整数型となります。) var_xで指定された変数に、コリジョンが検出されたX座標が代入されます。(変数は自動的に実数型となります。) var_yで指定された変数に、コリジョンが検出されたY座標が代入されます。(変数は自動的に実数型となります。) qgetcol命令を実行するごとに、検索結果を取り出すことができます。 検索結果がなくなった場合は、オブジェクトIDとして-1が代入されます。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qfind qgetcol2 qgetcol3 %index qgetcol2 コリジョン詳細情報取得 %prm var_depth,var_nx,var_ny var_depth : 衝突の深さを取得する変数 var_nx : 衝突のX法線を取得する変数 var_ny : 衝突のY法線を取得する変数 %inst qcollision命令による検索の結果を取得します。 必ず、qgetcol命令で結果を受け取った後で、情報を取得するようにしてください。 var_depthで指定された変数に、衝突の深さ(接触面にめりこんだ距離)が代入されます。(変数は自動的に実数型となります。) var_nx,var_nyで指定された変数に、衝突時の法線(x,y)が代入されます。(変数は自動的に実数型となります。) ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qfind qgetcol qgetcol3 %index qgetcol3 コリジョン詳細情報取得2 %prm var_bound,var_slide var_bound : 垂直速度を取得する変数 var_slide : 水平速度を取得する変数 %inst qcollision命令による検索の結果を取得します。 必ず、qgetcol命令で結果を受け取った後で、情報を取得するようにしてください。 var_boundで指定された変数に、接触面と垂直(はねる)方向の速度(プラス側がめりこみ方向)が代入されます。(変数は自動的に実数型となります。) var_slideで指定された変数に、接触面と水平(ひきずる)方向の速度が代入されます。(変数は自動的に実数型となります。) ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qfind qgetcol qgetcol2 %index qgettype typeパラメーターを取得 %prm num,var_type num(0) : オブジェクトID var_type : typeパラメーターを取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_typeで指定された変数に、typeパラメーター値が代入されます。(変数は自動的に整数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qtype %index qgetstat statパラメーターを取得 %prm num,var_stat,var_sleepcount num(0) : オブジェクトID var_stat : stat設定値を取得する変数 var_sleepcount: スリープカウント値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_statで指定された変数に、statパラメーター値が代入されます。(変数は自動的に整数型となります。) var_sleepcountで指定された変数に、スリープカウント値が代入されます。(変数は自動的に整数型となります。) スリープカウント値は、qstatで設定した値ではなく、内部の物理計算実行回数に応じた値になっているので注意してください。 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qstat %index qgetpos 位置、角度パラメーターを取得 %prm num,var_x,var_y,var_angle num(0) : オブジェクトID var_x : X座標設定値を取得する変数 var_y : Y座標設定値を取得する変数 var_angle : 角度設定値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_xで指定された変数に、X座標設定値が代入されます。(変数は自動的に実数型となります。) var_yで指定された変数に、Y座標設定値が代入されます。(変数は自動的に実数型となります。) var_angleで指定された変数に、角度設定値が代入されます。(変数は自動的に実数型となります。) 取得されるX,Y座標は、画面上の座標ではなくOBAQが使用する内部座標値なので注意してください。 内部座標値を画面上の座標に変換する場合は、qcnvaxis命令を使用してください。 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qpos qcnvaxis %index qgetspeed 速度パラメーターを取得 %prm num,var_px,var_py,var_pr num(0) : オブジェクトID var_px : X方向速度値を取得する変数 var_py : Y方向速度値を取得する変数 var_pr : 回転速度値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_pxで指定された変数に、X方向速度値が代入されます。(変数は自動的に実数型となります。) var_pyで指定された変数に、Y方向速度値が代入されます。(変数は自動的に実数型となります。) var_prで指定された変数に、回転速度値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qspeed %index qgetweight 重さなどのパラメーターを取得 %prm num,var_weight,var_moment num(0) : オブジェクトID var_weight : 重さの値を取得する変数 var_moment : モーメント値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_weightで指定された変数に、重さの値が代入されます。(変数は自動的に実数型となります。) var_momentで指定された変数に、モーメント値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qweight %index qgetdamper 吸振などのパラメーターを取得 %prm num,var_damper,var_friction num(0) : オブジェクトID var_damper : 吸振パラメーター値を取得する変数 var_friction : 摩擦抵抗値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_damperで指定された変数に、吸振パラメーター値が代入されます。(変数は自動的に実数型となります。) var_frictionで指定された変数に、摩擦抵抗値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qdamper %index qgetinertia 惰性などのパラメーターを取得 %prm num,var_inertia,var_gravity num(0) : オブジェクトID var_inertia : 惰性パラメーター値を取得する変数 var_gravity : オブジェクトの重力値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_inertiaで指定された変数に、惰性パラメーター値が代入されます。(変数は自動的に実数型となります。) var_gravityで指定された変数に、オブジェクトの重力値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qinertia %index qgetgroup グループパラメーターを取得 %prm num,var_mygroup,var_exgroup,var_loggroup num(0) : オブジェクトID var_mygroup : 自分が属するコリジョングループ値を取得する変数 var_exgroup : 衝突を除外するグループ値を取得する変数 var_loggroup: コリジョンログを作成するグループ値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_mygroupで指定された変数に、自分が属するコリジョングループ値が代入されます。(変数は自動的に整数型となります。) var_exgroupで指定された変数に、衝突を除外するグループ値が代入されます。(変数は自動的に整数型となります。) var_loggroupで指定された変数に、コリジョンログを作成するグループ値が代入されます。(変数は自動的に整数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qgroup qfind qcollision %index qgetmat マテリアルパラメーターを取得 %prm num,var_type,var_id,var_subid num(0) : オブジェクトID var_type : マテリアルタイプ値を取得する変数 var_id : 参照id値を取得する変数 var_subid : 参照subid値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_typeで指定された変数に、マテリアルタイプ値が代入されます。(変数は自動的に整数型となります。) var_idで指定された変数に、参照id値が代入されます。(変数は自動的に整数型となります。) var_subidで指定された変数に、参照subid値が代入されます。(変数は自動的に整数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qmat qgetmat2 qgetmat3 %index qgetmat2 マテリアル詳細パラメーターを取得 %prm num,var_offsetx,var_offsety,var_zoomx,var_zoomy num(0) : オブジェクトID var_offsetx : X方向表示オフセット値を取得する変数 var_offsety : Y方向表示オフセット値を取得する変数 var_zoomx : X方向表示倍率値を取得する変数 var_zoomy : Y方向表示倍率値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_offsetxで指定された変数に、X方向表示オフセット値が代入されます。(変数は自動的に整数型となります。) 指定したオブジェクトのパラメーターを変数に取得します。 var_offsetyで指定された変数に、Y方向表示オフセット値が代入されます。(変数は自動的に整数型となります。) 指定したオブジェクトのパラメーターを変数に取得します。 var_zoomxで指定された変数に、X方向表示倍率値が代入されます。(変数は自動的に実数型となります。) 指定したオブジェクトのパラメーターを変数に取得します。 var_zoomyで指定された変数に、Y方向表示倍率値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qmat2 qgetmat qgetmat3 %index qgetmat3 マテリアル表示パラメーターを取得 %prm num,var_gmode,var_rate num(0) : オブジェクトID var_gmode : コピーモード値を取得する変数 var_rate : 半透明レート値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_gmodeで指定された変数に、コピーモード値が代入されます。(変数は自動的に整数型となります。) var_rateで指定された変数に、半透明レート値が代入されます。(変数は自動的に整数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qmat3 qgetmat qgetmat2 %index qgetuser ユーザー定義データを取得 %prm num,var_user1,var_user2,var_user3 num(0) : オブジェクトID var_user1 : ユーザー定義データ1の値を取得する変数 var_user2 : ユーザー定義データ2の値を取得する変数 var_user3 : ユーザー定義データ3の値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_user1で指定された変数に、ユーザー定義データ1の値が代入されます。(変数は自動的に整数型となります。) var_user2で指定された変数に、ユーザー定義データ2の値が代入されます。(変数は自動的に整数型となります。) var_user3で指定された変数に、ユーザー定義データ3の値が代入されます。(変数は自動的に整数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href quser qgetuser2 %index qgetuser2 ユーザー定義データを取得2 %prm num,var_user4,var_user5,var_user6 num(0) : オブジェクトID var_user4 : ユーザー定義データ4の値を取得する変数 var_user5 : ユーザー定義データ5の値を取得する変数 var_user6 : ユーザー定義データ6の値を取得する変数 %inst 指定したオブジェクトのパラメーターを変数に取得します。 var_user4で指定された変数に、ユーザー定義データ4の値が代入されます。(変数は自動的に実数型となります。) var_user5で指定された変数に、ユーザー定義データ5の値が代入されます。(変数は自動的に実数型となります。) var_user6で指定された変数に、ユーザー定義データ6の値が代入されます。(変数は自動的に実数型となります。) 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href quser2 qgetuser %index qpush 任意の場所に力を与える %prm num,xw,yw,ax,ay,sw num(0) : オブジェクトID xw(0.0) : X座標(実数) yw(0.0) : Y座標(実数) ax(0.0) : X方向の力(実数) ay(0.0) : Y方向の力(実数) sw(1) : 設定オプション %inst 指定したオブジェクトに対して、(xw,yw)の位置から、(ax,ay)の強さで力を与えます。 与えられた力に応じて、オブジェクトの姿勢や速度が変化します。 swで、設定方法を指定することができます。 ^p sw 内容 -------------------------------------------------- 0 オブジェクトの速度に反映させない 1 オブジェクトの速度に反映させる ^p 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qblast %index qblast 任意の場所から放射状に力を与える %prm xw,yw,power,near,far xw(0.0) : X座標(実数) yw(0.0) : Y座標(実数) power(1.0) : 力の大きさ(実数) near(1.0) : 一番近い距離(実数) far(9999.0): 一番遠い距離(実数) %inst すべてのオブジェクトに対して任意の場所から放射状に力を与えます。 (xw, yw)を中心として、距離に反比例する力が加えられます。 powerは距離1.0の際に加わる力の大きさになります。 nearより近い位置は、反比例せずnearと同じ力の大きさとなります。 farより遠くにある場合は力は加わりません。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href qpush %index qgetversion バージョン情報を取得 %prm var var : バージョン情報を取得する変数 %inst OBAQのバージョン情報を取得します。 varで指定された変数に文字列としてバージョン情報が代入されます。 %href %index qinner 座標がオブジェクト内にあるかを取得 %prm var,x,y,num var : 結果を取得する変数 x(0.0) : X座標(実数) y(0.0) : Y座標(実数) num(-1) : オブジェクトID %inst (x,y)で指定された座標がオブジェクト形状の内側にあるかを調べます。 numで調べたいオブジェクトのIDを指定します。 numがマイナス値か、または省略された場合は、すべての有効なオブジェクトに渡って 座標が内側にあるかどうかをチェックします。 内側にある場合は、varで指定された変数にオブジェクトID値が代入されます。 内側にない場合は、varで指定された変数に-1が代入されます。 varで指定された変数は、自動的に整数型となります。 (x,y)で指定する座標は、画面上の座標ではなくOBAQが使用する内部座標値になります。 画面上の座標から結果を取得する場合は、cnvaxis命令などで内部座標値に変換を 行なう必要があるので注意してください。 ^ 実行に失敗した場合は、システム変数statに0以外の値が代入されます。 %href cnvaxis %index qgetptr システムポインタ値取得 %prm var,option var : 内容を取得する変数 option(0) : オプション値 %inst OBAQのシステムポインタ値を取得します。 このシステムポインタ値は、外部のアプリケーションやプラグイン等からOBAQの内部データにアクセスするために使用されます。 通常の使用では、システムポインタ値は必要ありません。 optionパラメーターでオプション値を設定することができます。 現在、optionパラメーターは0以外の値は無効になります。 %href hgobaq