触摸和画布元素位置不匹配
Posted
技术标签:
【中文标题】触摸和画布元素位置不匹配【英文标题】:Touch and Canvas element location do not match 【发布时间】:2019-10-27 12:31:06 【问题描述】:我正在尝试创建像WordCookie 这样的游戏。我想使用 LineRenderer,所以我不能使用 Screen Space - Overlay
Canvas Renderer 模式。当使用Screen Space - Camera
或World View
时,我的Touch
位置与我从RectTransforms
获得的位置不匹配。
我通过记录访问按钮的变换位置:
foreach (RectTransform child in buttons.transform)
Debug.Log("assigning" + child.transform);
对于触摸坐标,我只需记录touch.position
。
澄清;当位置向量之间的距离小于某个浮点数时,我想触发我的 LineRenderrer。但是,每当我点击我的按钮进行测试时,按钮记录在 (1.2, -2.6),我的触摸记录在 (212.2, 250.4)。
这可能是什么原因造成的?
【问题讨论】:
【参考方案1】:touch.position
使用像素坐标返回一个值。
为了转换为世界坐标,您需要使用:Camera.ScreenToWorldPoint
应该是这样的:
Vector2 touch = Input.GetTouch(0);
float buttonPositionZ = button.transform.position.z;
Vector3 worldPosition = camera.ScreenToWorldPoint(new Vector3(touch.x, touch.y, buttonPositionZ));
【讨论】:
以上是关于触摸和画布元素位置不匹配的主要内容,如果未能解决你的问题,请参考以下文章