RC関数リファレンス

Last-modified: 2020-09-06 (日) 11:39:51

モデルファイル内で使用できるRigidchips用の関数。所謂RC関数。

各種情報取得関数

_MX()

マウスカーソルのRC画面左端を基準とした左右方向の距離(px)。右が+

_MY()

マウスカーソルのRC画面上端を基準とした上下方向の距離(px)。下が+

_ML()

マウスの左ボタンの状況取得

_MR()

マウスの右ボタンの状況取得

_MM()

マウスの中ボタンの状況取得

_DT()

1/(_BASE()*10)

_FPS()

一秒間に画面が更新された回数 Frame Per Second

_BASE()

基準FPS 15か30

_TICKS()

モデルをロードしてからの経過フレーム数
_TICKS()が150になるまではArmを発射できない、また、被弾しない

_SETTICKS()

_TICKSをリセットし、0に戻す
モデルをロードした直後と同様に、Armが発射できなくなるので注意

_KEY(キー番号)

キーの状況取得

_KEYDOWN(キー番号)

キーの押し下げ状況取得

_KEYUP(キー番号)

キーの押し上げ状況取得

_ANALOG(軸番号)

0~5番のアナログ軸の位置を取得する(-1000~1000)

_HAT()

ハットスイッチの状況取得

_HEIGHT()

画面の縦幅(px)

_WIDTH()

画面の横幅(px)

_FACE()

現在読み込んでいるLandのポリゴン数

_ZOOM(視野角)

コア視点の視野角の変更(1~100)

チップ情報取得関数

_X(チップ番号) _Y(チップ番号) _Z(チップ番号)

チップのX,Y,Z座標

_AX(チップ番号)_AY(チップ番号) _AZ(チップ番号)

非推奨。_EX,Y,Zを利用されたし

_EX(チップ番号) _EY(チップ番号) _EZ(チップ番号)

オイラー角度(radian)

_FX(チップ番号) _FY(チップ番号) _FZ(チップ番号)

並進運動量

_GX(チップ番号) _GY(チップ番号) _GZ(チップ番号)

重心座標

_LX(チップ番号) _LY(チップ番号) _LZ(チップ番号)

角運動量

_QX(チップ番号) _QY(チップ番号) _QZ(チップ番号) _QW(チップ番号)

クォータニオン

_RX(チップ番号,参照チップ番号) _RY(チップ番号,参照チップ番号) _RZ(チップ番号,参照チップ番号)

相対オイラー角

_VX(チップ番号) _VY(チップ番号) _VZ(チップ番号)

並進速度

_WX(チップ番号) _WY(チップ番号) _WZ(チップ番号)

角速度(radian/s)
※ホイールの回転速度を除き、ノイズが多いため角速度制御などに使用するのは推奨されない。
別途角度の変化を元に算出するライブラリ等を使用するのが望ましい。

_XX(チップ番号) _XY(チップ番号) _XZ(チップ番号)

X軸ベクトル

_YX(チップ番号) _YY(チップ番号) _YZ(チップ番号)

Y軸ベクトル

_ZX(チップ番号) _ZY(チップ番号) _ZZ(チップ番号)

Z軸ベクトル

_I(チップ番号)

慣性テンソル

_H(チップ番号)

チップから真下の地表までの距離。0~約10mの範囲で検知し、検知できない場合は-100000を返す
より正確には、チップと地形の詳細な当たり判定処理に使われる近接ポリゴンと
チップから真下方向ベクトルの交点。(処理軽量化のため、近接しないポリゴンとは当たり判定を計算していない。)
そのため、地表付近に切り離された他のチップ・オブジェクトがあり、近接ポリゴンとの当たり判定処理が行われている場合、
その上空からでも_H関数で地表との距離を知ることができる

_M(チップ番号)

チップの質量

_E(チップ番号)

Armのチャージ状況 1フレームに2500増え、Optionの数値まで増加する

_T(チップ番号)

チップ耐久力 Arm弾が当たると減少 0~10000 -1で破壊済み

_CHIPS()

モデル全てのchipの数。
※コア系ではない。

_WEIGHT()

コア系の重量

チップ属性取得

_TYPE(チップ番号)

チップの種類

0:core
1:chip
2:rudder
3:rim
4:wheel
5:rlw
6:trim
7:jet
8:weight
9:cowl
10:arm
33:frame
34:rudderf
35:trimf

_ANGLE(チップ番号)

チップのANGLE値

_BRAKE(チップ番号)

チップのBRAKE値

_COLOR(チップ番号)

チップのCOLOR値

_POWER(チップ番号)

チップのPOWER値

_SPRING(チップ番号)

チップのSPRING値

_DAMPER(チップ番号)

チップのDAMPER値

_EFFECT(チップ番号)

チップのEFFECT値

_OPTION(チップ番号)

チップのOPTION値

_FUEL(チップ番号)

_FUELMAX(チップ番号)

_USER1(チップ番号)

_USER2(チップ番号)

_DIR(チップ番号)

チップの生えている方角

0:S
1:W
2:N
3:E

※コアは0を返すが、_XX~ZZ系の座標系はN向き

_PARENT(チップ番号)

チップの親チップの番号
親チップが無い場合-1が返る

_TOP(チップ番号)

チップの系の根元のチップ番号

オブジェクト(ボール)関連

_MOBJ(オブジェクト番号)

オブジェクトの質量

_IOBJ(オブジェクト番号)

オブジェクトの慣性テンソル(3x3)の値取得、列番号・行番号は(0,1,2)

_OX(オブジェクト番号) _OY(オブジェクト番号) _OZ(オブジェクト番号)

オブジェクトの座標

CCD関連

_CCD(x,y)

CCD窓の指定ピクセルの色を取得できます。
15bitRGB整数値(各色32段階)

0,0=左上
0,63=右上
63,0=左下
63,63=右下

※xとyが逆さになっている。恐らく実装ミス。下記3関数も同様

_RED(x,y)

_GREEN(x,y)

_BLUE(x,y)

各種出力関数

out(行数,内容)

RCの画面に内容を表示する。行数は0~24

_MOVE2D(x,y)

_LINE2D(x,y)

_MOVE3D(x,y,z)

_LINE3D(x,y,z)

_SETCOLOR(色)

LINEの色を設定する

ネットワーク関連

nは0(Host)~末尾(_PLAYERS()-1)の範囲

_PLAYERS()

プレイヤー数

_PLAYERHOSTID()

ホストのID

_PLAYERMYID()

自分のID

_PLAYERID(n)

n番目のプレイヤのID (nは0~_PLAYERS()-1)

_PLAYERCHIPS(n)

n番目のプレイヤのチップ数 (nは0~_PLAYERS()-1)

_PLAYERARMS(n)

n番目のプレイヤのArmチップ数

_PLAYERCOLOR(n)

n番目のプレイヤのマーカーカラー

_PLAYERCRUSHES(n)

n番目のプレイヤのクラッシュ回数

_PLAYERRESETS(n)

n番目のプレイヤのリセット回数

_PLAYERINITS(n)

n番目のプレイヤのモデル読み込み回数

_PLAYERYFORCES(n)

n番目のプレイヤのYForce使用数

_PLAYERX(n)

n番目のプレイヤのCoreの位置x (nは0~_PLAYERS()-1)

_PLAYERY(n)

n番目のプレイヤのCoreの位置y (nは0~_PLAYERS()-1)

_PLAYERZ(n)

n番目のプレイヤのCoreの位置z (nは0~_PLAYERS()-1)
Coreの位置にはそれぞれ+-5mほどの雑音が乗せてある

_PLAYERNAME(n)

n番目のプレイヤの名前 (nは0~_PLAYERS()-1)

その他

_BYE(チップ番号)

チップを切り離す。切り離した先のWheelやJetなどの動力は失われる

_SPLIT(チップ番号)

チップを切り離す。動力あり版

_RND()

0~1の乱数
math.randomと同じなのだが、なぜScript専用ではないのか謎

_TODEG(値)

radianをdegreeに変換する。
math.degと同じなのだが、なぜScript専用ではないのか謎

_TORAD(値)

degreeをradianに変換する。
math.radと同じなのだが、なぜScript専用ではないのか謎

Script専用

これらの関数はLuaでは使用できない。大半はLuaの算術関数で代用できる。

_ABS(x)

絶対値

math.abs(x)

_MOD(x,y)

xをyで割った余り

math.mod(x,y)

_SQRT(x)

平方根

math.sqrt(x)

_SIN(x)

正弦関数

math.sin(x)

_COS(x)

余弦関数

math.cos(x)

_TAN(x)

正接関数

math.tan(x)

_SGN(x)

符号関数。値がマイナスなら-1、プラスなら1、0なら0を返す。

math.sgn = function (x) if x < 0 then return -1 elseif x == 0 then return 0 else return 1 end end

_ASIN(x)

逆正弦関数

math.asin(x)

_ACOS(x)

逆余弦関数

math.acos(x)

_ATAN(x)

逆正接関数

math.atan(x)

_ATAN2(x)

xy直交座標におけるx,yの偏角

math.atan2(x,y)

_POW(x,y)

累乗関数 xのy乗

math.pow(x,y)

_EXP(x)

自然指数関数 ネイピア数eのx乗

math.exp(x)

_INT(x)

math.int = function (x) if x < 0 then return math.ceil(x) else return math.floor(x) end end

_ROUND(x)

math.round = function (x) return int(x + 0.5*sgn(x)) end

_FIX(x)

_FLOOR(x)

切り捨て

math.floor(x)

_CEIL(x)

切り上げ

math.ceil(x)

_LOG(x)

対数関数

math.log(x)

_LOG10(x)

_LEN3(a,b,c)

math.len3 = function (a, b, c) return math.sqrt(a*a+b*b+c*c) end

_PI()

円周率

math.pi
※関数ではなく変数

_VEL(チップ番号)

チップの速度[m/s]

_VEL(チップ番号)=math.sqrt(_VX(チップ番号)^2+_VY(チップ番号)^2+_VZ(チップ番号)^2)

_PLAYERNAME2(プレイヤー番号)

n番目のプレイヤの名前2 (nは0~_PLAYERS()-1)
Scriptで4byte以上の名前がほしい場合に使用する

print 0,$_PLAYERNAME2(0,0),$_PLAYERNAME2(0,1),$_PLAYERNAME2(0,2)

_PLAYERNAME2(0,0)と_PLAYERNAME(0)は同等