需求:
希望随着游戏进程,摄像机能够旋转,从别的角度观察地图。
思路:
- 修改摄像机的node中的rotation对视野没有任何影响,即摄像机旋转无效。改用地图旋转。
- 地图应该绕着anchor(0.5,0.5)旋转,所以把地图及其子物体/父物体的anchor都改为(0.5,0.5)
- 地图旋转之后,它的坐标系就发生了变化。对于地图上的点来说,它要和mousePos(世界坐标)相比较,就必须重新进行坐标系转换:要么把坐标都统一到世界坐标下,要么都统一到地图坐标下。
- 地图旋转之后,摄像机要和地图上的点对齐。这就涉及到摄像机的坐标和地图上的点比较的问题,同样需要统一坐标。
代码:
1.什么时候地图应该旋转?旋转多少度?
////////////////////////////////cameraControl
rotateMap(startPos,nextPos){
//把startPos和nextPos从mapBox的坐标系转换成世界坐标(convertToNodeSpaceAR()函数的参数必须是世界坐标)
//再转换到map坐标系(camera所在坐标系)
var r_start=this.map.convertToNodeSpaceAR(this.mapBox.convertToWorldSpaceAR(startPos));
var r_next=this.map.convertToNodeSpaceAR(this.mapBox.convertToWorldSpaceAR(nextPos));
//判断start和next在map坐标系下的相对位置,决定是否旋转
if(r_next.y<r_start.y){
if(r_next.x>r_start