FlipToy用来演示图像/动画翻转的效果.
模块定义
<ModuleDefinition
ModuleId="FlipToy"
VersionId="1"
Description="Demonstrates flipping the rendering of sprites horizontally and vertically."
Dependencies="ToyAssets=1"
Type="toy"
ToyCategoryIndex="3"
ScriptFile="main.cs"
CreateFunction="create"
DestroyFunction="destroy">
// 自身所有资源申明
<DeclaredAssets
Path="assets"
Extension="asset.taml"
Recurse="true"/>
</ModuleDefinition>
代码片段
function FlipToy::createSprite( %this, %position, %size, %flipX, %flipY )
{
// 创建精灵
%object = new Sprite();
// 位置设置(后面会说到,这个是场景可缩放游戏特有的)
%object.Position = %position;
// 精灵尺寸
%object.Size = %size;
// 资源设定
%object.Animation = "FlipToy:pufferfishAnim";
// 翻转设置
%object.setFlip( %flipX, %flipY );
// 加入到场景中
SandboxScene.add( %object );
}
坐标与画布
Torque2D的坐标系以画布中心(一般是屏幕中心)为原点.相机的视野尺寸应该和画布的大小相关联,比如画布上元素很少,那么如果相机视野过大,布局上就很单调.反之效率也不好.
拿这个例子来说,在创建的过程中,一共设定了4个精灵:
// Create a sprite.
%this.createSprite( "-25 19", "50 37.5", false, false );
%this.createSprite( "25 19", "50 37.5", true, false );
%this.createSprite( "-25 -19", "50 37.5", false, true );
%this.createSprite( "25 -19", "50 37.5", true, true );
从代码上可以看出,四个精灵的排布一共占的区域是{100,75},而窗体一般都是比这个大很多的,所以如果不进行对应的相机视野修改,那效率非常差.
相机视野修改的代码在FlipToy中是看不见的,这里说明一下,他的设置在SandBox模块的Scene.cs中,在创建场景窗口的时候设定了,代码如下:
SandboxWindow.setCameraPosition( 0, 0 );
SandboxWindow.setCameraSize( 100, 75 );
SandboxWindow.setCameraZoom( 1 );
SandboxWindow.setCameraAngle( 0 );
我们可以在需要的时候修改,调用上面的SetCameraSize就可以了~
效果图: