通过手机触摸去移动摄像机

问题详情为 目前要实现 拖动屏幕区域将摄像机跟随手指去移动 看官方文档说明 当摄像机移动后 ,点击的坐标就变成了摄像机坐标系下的坐标 请问 官方 camera.getCameraToWorldPoint(point, out); 其中 out 参数代表什么意思 不填写会不会影响效果 。
本人菜鸡一枚 目前正在测试摄像机移动,没有办法根据效果去推测参数 。如果有大佬已经有实现 通过手指去移动摄像机的demo 还请不吝赐教 感激不尽。

你这样好费劲?试试这样弄吧,放到camera节点里就行

cc.Class({
extends: cc.Component,
properties: {
},
start () {
this.node.on(cc.Node.EventType.TOUCH_START, this.clickEvent,this);
this.node.on(cc.Node.EventType.TOUCH_MOVE, this.clickEvent,this);
this.node.on(cc.Node.EventType.TOUCH_END, this.clickEvent,this);
this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.clickEvent,this);
},
clickEvent: function(event){
switch(event.type)
{
case ‘touchstart’:
this.postion=this.node.getPosition();
break;
case ‘touchmove’:
var touchPos=cc.v2(this.node.getPosition().x+event.getDelta().x,this.node.getPosition().y+event.getDelta().y);
this.node.setPosition(touchPos);
break;
case ‘touchend’:
case ‘touchcancel’:
this.node.setPosition(this.postion);
break;
}
},
});

1赞

给大佬跪了 很6

2.1.1版本没用呢,

后面你解决了吗,我的也是2.1.1的

我2.2.2都能用

通过delta去移动相机并不严谨的。因为有时除了移动相机以外还会进行缩放,当存在缩放时,getDelta得到的移动向量就不是真实移动向量了。所以,还是需要将location转世界坐标,然后再进行计算。
另外,如果把touch的监听注册在Camera节点上,这时还需要设置Camera节点的尺寸足够大,至少能够保证在可是区域内都能点到。

大佬,缩放和移动摄像机都需要的情况下,应该如何写呢

我通常是通过cc.Event.EventTouch.getLocation获取当前触点位置。然后通过cc.Camera.getCameraToWorldPoint获取触点在世界坐标下的真实位置(因为可能摄像机移动或缩放),最后再转为Camera节点的局部坐标。

3赞

大佬移动和缩放摄像机有demo吗