Egret社区

基于egret的摄像机类 Camera2D

2017-12-19 20:43
22275214
本帖最后由 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 world2World=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
下面再写一个普通的游戏使用摄像机的情况
其实大致是与上面的内容差不多的。
只不过需要手动写当小球的运动与小球到达边界需要停下来的情况

游客,如果您要查看本帖隐藏内容请回复



演示地址
QQ图片20171219210605.png
在演示中单击场景可以改变小球的冲量

手机在线演示

下载 (2).png


utils.rar

3.15 KB, 下载次数: 323, 下载积分: 银子 -1

售价: 1 银子  [记录]

基于egret的摄像机类 Camera2D

分享到 :
11 人收藏

214 个回复

正序浏览
ming0223  初学乍练 | 4 天前
6666666666666666666
h1116  登堂入室 | 2020-12-24 21:21:30
7777777777777
HGao  登堂入室 | 2020-12-8 09:54:46
fdsfffffffffffffffffffffffffffffffffffffff
路过的小龙  初学乍练 | 2020-11-3 15:04:27
111111111
碧落.  登堂入室 | 2020-11-1 15:13:26
学习一下
bluesky7290  登堂入室 | 2020-10-29 10:29:18
呵呵,学习用。
haitao  登堂入室 | 2020-10-21 09:21:49
非常棒,很好学习一下
pjyGod  初学乍练 | 2020-10-20 14:48:13
22222
panming0230  登堂入室 | 2020-10-5 10:12:59
测试看看
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部