ここでは、私自身の DAE モデルとテクスチャ ファイルを使用して XE2 で状況に応じてテストし、うまく機能しているようです。
procedure TForm2.createMap(r:integer;c:integer);
var
player : tmodel3d;
begin
// NEVER create a 3D object as a sub-component of anything other than a 3D viewport!
player := TModel3d.Create(viewport3d1);
{
Ensure that the Parent is always set before operating on the control.
Some operations (such as texturing) will force the object to be re-rendered
so if your parent isn't specified (or isn't ready for rendering) it will cause
some nasty bugs.
}
player.Parent := viewport3d1;
player.Visible := true;
Player.Position.X := 0;
player.Position.Y := 0;
player.position.Z := 2;
player.LoadFromFile(gamedir+'\pics\player.dae');
player.MeshCollection[0].Material.texture.loadfromfile(gamedir+'\pics\playertexture.bmp');
ゲーム アーキテクチャの観点からは、実際には に似たカスタム クラスを作成しTPlayer
、モデルをそのオブジェクトのメンバーとして持つ必要があります。このようにして、すべてのプレーヤー コントロールを に関連付けることができTPlayer
、ゲーム ロジックの上位から手動で操作しなければならない単なるモデルではなく、記述されたエンティティになります。
また、モデルの位置とカメラの位置が、カメラの透視フレーム内にあることを確認する必要があります。