大佬们请教一个屏幕分辨率适配的问题


大佬们,我写了个拖动的监听事件,当实际分辨率与设计分辨率不同时,Y轴上下移动不跟手,X轴移动正常。
。。。
比如Y轴移动2,但节点实际移动只有1
这是为啥呢?很纳闷

大概率是因为你的width就是480,而height不是800,为什么要乘这个值?

1赞

我设计的分辨率是480*800,我在其他分辨率下测试发现拖动不跟手,所以我就想用(设计分辨率/实际分辨率)*移动的轴距来实现节点拖动功能。大佬有更好的方法做适配其他分辨率吗

width也不是480,但是x轴拖动正常

直接用event.getUIDelta 不要去*分辨率

好嘞,多谢大佬解惑,我去试试看

// 获取触点的位置,屏幕坐标

const location = e.getLocation()

// 利用相机数据对象将屏幕点转换成世界坐标下的值

const pos = this.camera.screenToWorld(v3(location.x, location.y))

this.node.setWorldPosition(pos)

这样就行了,需要注意坐标转换

有几个概念点 屏幕坐标 ui坐标 世界坐标

我也希望你能帮助更多的人

好嘞多谢大佬