TGE学习笔记06 - 动画模型
我们都知道怎样将静态模型加入场景,但是如何将带动画的模型加入场景呢?
在经过两天的摸索后,终于让我找到了方法。
其实,这个方法很简单,但对于我们这些刚接触Torque引擎的人来说,可走了不少弯路,
在此记录下我的探索历程,也是希望后来者能少走一些弯路。
言归正传,下来就来说一说添加的步骤:
1.制作动画,导出dts模型
2.新生成一个脚本文件,比如Ma1.cs,放到./Game/Server目录下
3.编写脚本代码,创建可在编辑器里编辑的带动画的静态模型
exec("./Ma1.cs");
5.运行exe,就可以在地图编辑器中增加新的模型了,这个Ma1的模型位于Shapes/Misc/下
6.加入模型后,模型并不会自动播放动画,可以在控制台敲入命令m1.playThread(0,"run");
就可以看到动画了。当然,这儿的m1要换成你自己生成的模型的名字,而run换成你的动画名字。
7.虽然看到动画了,但是我们希望刚进入场景就能自动播放,玩家可不会在控制台里敲命令。
不要急,要想自动我们需要在./Game/main.cs文件的function loadMyMission()中增加一段代码:
恭喜你,所有的工作都完成了,下面你就可以重新载入关卡,看看努力的成果了。
在经过两天的摸索后,终于让我找到了方法。
其实,这个方法很简单,但对于我们这些刚接触Torque引擎的人来说,可走了不少弯路,
在此记录下我的探索历程,也是希望后来者能少走一些弯路。
言归正传,下来就来说一说添加的步骤:
1.制作动画,导出dts模型
2.新生成一个脚本文件,比如Ma1.cs,放到./Game/Server目录下
3.编写脚本代码,创建可在编辑器里编辑的带动画的静态模型
1datablock StaticShapeData(Ma1Data)
2{
3 category = "Misc";
4 shapeFile = "~/data/ma1.dts";
5 isPlaying = 1;
6};
7
8function Ma1Data::create(%db)
9{
10 %shape = new StaticShape(){
11 dataBlock = %db;
12 };
13 //%shape.playThread(0,"flow");
14 MissionCleanup.add(%shape);
15 return %shape;
16}
17
18function Ma1Data::onRemove(%this, %obj)
19{
20 if (%obj.client.player == %obj)
21 %obj.client.player = 0;
22}
4.在./Game/Server/game.cs文件的function onServerCreated()中增加一行:2{
3 category = "Misc";
4 shapeFile = "~/data/ma1.dts";
5 isPlaying = 1;
6};
7
8function Ma1Data::create(%db)
9{
10 %shape = new StaticShape(){
11 dataBlock = %db;
12 };
13 //%shape.playThread(0,"flow");
14 MissionCleanup.add(%shape);
15 return %shape;
16}
17
18function Ma1Data::onRemove(%this, %obj)
19{
20 if (%obj.client.player == %obj)
21 %obj.client.player = 0;
22}
exec("./Ma1.cs");
5.运行exe,就可以在地图编辑器中增加新的模型了,这个Ma1的模型位于Shapes/Misc/下
6.加入模型后,模型并不会自动播放动画,可以在控制台敲入命令m1.playThread(0,"run");
就可以看到动画了。当然,这儿的m1要换成你自己生成的模型的名字,而run换成你的动画名字。
7.虽然看到动画了,但是我们希望刚进入场景就能自动播放,玩家可不会在控制台里敲命令。
不要急,要想自动我们需要在./Game/main.cs文件的function loadMyMission()中增加一段代码:
%m1 = nameToID("m1");
if (!isObject(%m1))
{
echo("Scene Error: Could not find m1!");
}
else
{
%m1.playThread(0, "run");
}
if (!isObject(%m1))
{
echo("Scene Error: Could not find m1!");
}
else
{
%m1.playThread(0, "run");
}
恭喜你,所有的工作都完成了,下面你就可以重新载入关卡,看看努力的成果了。