CRYENGINE V Luaを使用して、新しいEntityを実装する方法

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データ型
bbooleantrueまたはfalseのいずれか
ffloat浮動小数点のデータ型
iinteger数字のデータ型
sstringテキストを格納するために使用される文字の配列。
clrcolor浮動小数点のデータ型。カラーの値
object_CFG、CGA、CHRまたはCDFファイル。 fileModelの場合もありどちらが良いのか分かっていない

Sandbox内での表示関連

Model 
ShowBounds 
AbsoluteRadius 
IconEntityの上に描画かれた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

アンケートモニター登録

コメントを残す