摄像头的使用意义在于从何处看物体,以什么角度看物体,所谓“横看成岭侧成峰”。比如一个坦克在行进中,你可以从上往下垂直俯视,也可以45度侧视,还可以像坐在坦克里平视,而这时候使用摄像头最好不过了。我最近整理一个box2d项目,使用摄像头可以实现物体跨屏移动而不用改变物体的位置。在这个项目,刚体从高处落下,与其碰撞的物体可能不在同一屏中(即距离比较远,一个屏幕显示不下),这时候由于游戏视觉引擎(cocos2d-js)与物理引擎需要同步,而显得困难重重,在不强制改变物体位置(即在切换屏幕时强制重新设定刚体位置)的情况下,最好用摄像头转换。实际上强制改变物体位置也能实现,但是不是很自然。
当物体掉落到另一屏时,可以通过以下两个函数实现:
onClickUp:function(touch,event){
this._fixedPos.y +=
20;
var
eyePos
=
this._camera.getEye();this._camera.setEye(this._fixedPos.x,
this._fixedPos.y,eyePos.z);var
centerPos
=
this._camera.getCenter();
this._camera.setCenter(this._fixedPos.x,this._fixedPos.y,centerPos.z
);
},
onClickDown:function(touch,event)
{
if(this._fixedPos.y
<= 0) {
return;
}
this._fixedPos.y
-=
20;
var
eyePos
=
this._camera.getEye();
this._camera.setEye(this._fixedPos.x,this._fixedPos.y,eyePos.z);
var
centerPos
=
this._camera.getCenter();
this._camera.setCenter(this._fixedPos.x,
this._fixedPos.y,centerPos.z
);
},
这里this._camera
是cocos里当前场景上的一个layer的摄像机,所有刚体对应的图片都是这个layer的孩子节点。即每次上移,摄像头的y位置上移20像素,下移则下移20像素,到达底部时不再下降。
另外需要注意的一点是有些android机器的浏览器不支持改变摄像头,而苹果机器和pc机基本都支持。