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就可以了~
效果图: