本帖最后由 ywx620 于 2017-12-20 09:04 编辑
游戏中有时候需要对主角的镜头跟踪,而egret在3D有写摄像机类而在2D方面就没有写了。
于是我基于白鹭引擎写了个2D的摄像机,用来跟踪角色位置。
这个摄像机适用与普通的游戏场景。
同时也适用于基于P2的物理游戏场景。
下面我以P2物理引擎为例子举例使用
使用了两个类P2World与Camera2D
[mw_shl_code=actionscript3,true]
//首先增加一个背景,把背景设置大一些
var bg=new eui.Image("bg_jpg")
bg.width=bg.height=2000;
this.addChild(bg)
//创建P2物理世界,有一个向下100的重力
var world 2World=new P2World(0,100);//把世界加载出来,主要是用于显示debug,P2世界本身是不用加载出来的。
this.addChild(world);
//创建P2四面的墙,防止小球跑出去
world.createWall(new egret.Rectangle(0,0,this.width,this.height));
//创建小直径为50的小球
var ball:p2.Body=world.createCircleBodyShape(50);
ball.mass=10;
//画出小球皮肤
world.drawSkin(ball);
//创建摄像机,需要三个参加,跟踪的目标(一个可显示对象),场景(包含背景与跟踪目标),摄像机显示范围
var cameraRect:egret.Rectangle=new egret.Rectangle(0,0,this.stage.stageWidth,this.stage.stageHeight);
var camera:control.Camera2D=new control.Camera2D(ball.userData.skin,this,cameraRect);
//一个循环函数,用来更新摄像机位置
this.addEventListener(egret.Event.ENTER_FRAME,onLoop,this);
function onLoop(e:egret.Event):void
{
camera.move();
}
[/mw_shl_code]
有些同学可能不知道如何使用P2
下面再写一个普通的游戏使用摄像机的情况
其实大致是与上面的内容差不多的。
只不过需要手动写当小球的运动与小球到达边界需要停下来的情况
演示地址
在演示中单击场景可以改变小球的冲量
手机在线演示
|
-
-
utils.rar
3.15 KB, 下载次数: 323, 下载积分: 银子 -1
售价: 1 银子 [记录]
基于egret的摄像机类 Camera2D
|