我之前也实现了这个功能,实现方法是角色移动到哪儿,镜头就setPosition到相同的位置,但此举实在不够优雅,于是在网上寻找更好的方法。
在论坛里我看到了cc.follow这个方法,下面为它的用法:
/*cc.follow(第一个参数为cc.Node,第二个参数可选:cc.Rect),返回cc.Action*/
Camera.node.runAction(cc.follow(cc.Node));
//camera执行动作跟随node
Camera.node.runAction(cc.follow(cc.Node,new cc.Rect(-10,-10,20,20)));
//node在Rect的矩形范围内镜头不跟随移动,将要出范围时镜头跟随移动
以上为我从网上找到的cc.follow的使用方式,但并不实用。。。后来注意到node和camera是有层级关系,于是我把node设为camera的下层,然而还是不行。
但是这引起了我的思考,子节点能不能跟着父节点移动呢?
我想的是将camera设为node的子节点,移动角色(node)时,子节点(镜头)跟着移动。
果然,,,成功了。
那么解决方式:将camera拖为node的子节点。不需要给camera添加脚本,镜头就能跟着node移动。
另外,如果有人解决了cc.follow的问题,欢迎前来指教。
另外附上不优雅的解决方式:在正常的层级中,为player添加脚本(加入属性:camera),在角色移动时镜头也移动
//镜头跟随角色移动
this.camera.node.setPosition(this.node.x,this.node.y);