Luaを使用して、新しいEntityを実装する方法
2018/12/10 追記
今後、Luaは廃止になるのでLuaの使用は非推奨です。今後は、代わりにビジュアルスクリプティングのSchematycを使います。
まだ詳しくわかっていません。間違っているかも。見づらいので文の修正を予定。
新しいEntityを実装するには、.Luaファイルと.entファイルの2つのファイルを指定の場所に追加する必要があります。
.entファイル場所
Assets\entities
.luaファイル場所
Assets\scripts\entities
.entファイル
entファイルは、Entityを登録するためのファイル。xml形式。
<Entity
Name="RadarBase"
Script="Scripts/Entities/Others/cube.lua"
/>
Name Entity classの名前
Script .Luaファイルパス。エンティティクラスを実装するために使用
Invisible サンドボックス内で見えなくする。
Luaファイル
高速な実行速度が特徴のスクリプト言語。
ゲーム開発での利用も多い。
プロパティ表
このプロパティ表を作ることによってEntityのパラメータを設定できます。
cube = {
Properties = {
object_Model = "Objects/cube.cgf",
Mass = 10, --[25,100,0.1,"Comment"]
Density = -1,
bRigidBody = 1,
bPushableByPlayers = 0,
},
Editor={
Icon=”Tornado.bmp”,
},
}
function cube:OnReset() –スクリプトがリロードされるたびに呼び出される
self:LoadObject(0, self.Properties.fileModel); — 重要?オブジェクトをリロード?
end
function cube:OnInit() –実際のゲームか、Sandboxのゲームモードの時に呼び出される
self:OnReset(); –自身にOnReset関数を使用
end
function cube:OnPropertyChange() –プロパティを変更するたびに呼び出される
self:OnReset(); –自身にOnReset関数を使用
end
Luaファイル内に割り当てられた値は、サンドボックスのデフォルト値として使用される。
プロパティ値に希望するデータ型を付ける
値の名前にプレフィックス付ける (値の名前の先頭に付ける)
値の名前の先頭に付ける | Data Type | データ型 |
b | boolean | trueまたはfalseのいずれか |
f | float | 浮動小数点のデータ型 |
i | integer | 数字のデータ型 |
s | string | テキストを格納するために使用される文字の配列。 |
clr | color | 浮動小数点のデータ型。カラーの値 |
object_ | CFG、CGA、CHRまたはCDFファイル。 | fileModelの場合もありどちらが良いのか分かっていない |
Sandbox内での表示関連
Model | |
ShowBounds | |
AbsoluteRadius | |
Icon | Entityの上に描画かれたBMPアイコン |
IconOnTop | アイコンが上に描画するか下に描画するか |
DisplayArrow | |
Links |
Special Comments
利用可能な変数の後ろに特別なコメントを追加することで、エディタ内部のデフォルトのスライダーを変更することができます。
–[25,100,0.1,”Comment”]
値を25と100の間の値に制限
0.1は、小数の0.01 ずつ変更可能
“Comment”の部分は、追加情報を提供する。変数の上に、ポップアップ表示されるツールヒントが追加。
Functions
スクリプトエンティティは、エンジンやゲームシステムによって呼び出さいくつかのコールバック関数を含めることができます。
詳細は、Callback Referencesから
http://docs.cryengine.com/display/SDKDOC4/Callback+References
最低限以下のコールバック関数が必要なようです。
function cube:OnReset() --スクリプトがリロードされるたびに呼び出される
self:LoadObject(0, self.Properties.fileModel); -- これが無いとモデルが表示されなかった。
end
function cube:OnInit() --実際のゲームか、Sandboxのゲームモードの時に呼び出される
self:OnReset(); --自身にOnReset関数を使用
end
function cube:OnPropertyChange() --プロパティを変更するたびに呼び出される
self:OnReset(); --自身にOnReset関数を使用
end