Cocos摄像机缩放与拖拽 鱼与熊掌兼得Cocos3.x解决缩放与拖拽冲突 Scale Camera

如果想要正常的拖拽摄像机

则必须要打一下的勾勾
在这里插入图片描述

否则拖拽的比例会不匹配

比如说拖拽100像素的距离 可能摄像机只会移动40像素之类的

非常的坑爹

因为3。x版本没有摄像机的zoom属性 所以是无法计算的

现在的摄像机只能修改othroHeight(只针对2d游戏

在这里插入图片描述

妈个鸡吧 他妈的变成别的机型又不行了
或者再游戏中变成别的缩放比例也不行了

应该是要考虑变换机型以后屏幕缩放问题
******八,我终于搞定了。

首先我们不考虑机型问题,毕竟如果我们能够把这个Align勾上的话,那么其实游戏进去一开始,拖拽是很正常的。

那么我们就要解决的是,如果我们有需要放大或者缩小摄像头的时候,拖拽异常,应该怎么处理。

我经过反复实验,得出这样的结论

假设目前的OthroHeight为100 那么我们如果通过缩放摄像头以后调整了OthroHeight的高度为80

那么我们拖拽的时候得实际距离是 (80/100)*distance

真的可恶,我实验了这么久!

解决方案如下:

    /**摄像机拖动 */
    BeDraging(e: EventTouch) {
    
    
        let TouchPos = e.getLocation()
        let Touchpos3 = new Vec3(TouchPos.x, TouchPos.y)
        let TheCamera = this.TheGameManager.GameCamera;
        // let WorldPos = new Vec3;
        // TheCamera.camera.screenToWorld(WorldPos, Touchpos3)
        let realPos2 = Touchpos3


        //获取移动距离和角度
        let distance = MathTools.GetDistanceBetweenTwoPoints(this.TouchStartPos, realPos2)
        let radian = MathTools.GetRadianBetweenTwoPoints(this.TouchStartPos, realPos2)
        console.log(TheCamera)


        let X = Math.cos(radian) * distance * TheCamera.camera.orthoHeight / 320//320这个是一开始的摄像机的高度,这个可以自己用一个变量来调
        let Y = Math.sin(radian) * distance * TheCamera.camera.orthoHeight / 320



        console.log('距离' + distance)
        TheCamera.node.setWorldPosition(new Vec3(this.CameraStartPos.x - X, this.CameraStartPos.y - Y));

    }

猜你喜欢

转载自blog.csdn.net/Yourset/article/details/126444993
今日推荐