如果想要正常的拖拽摄像机
则必须要打一下的勾勾
否则拖拽的比例会不匹配
比如说拖拽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));
}