【问题标题】:Touch and Canvas element location do not match触摸和画布元素位置不匹配
【发布时间】:2019-10-27 12:31:06
【问题描述】:

我正在尝试创建像WordCookie 这样的游戏。我想使用 LineRenderer,所以我不能使用 Screen Space - Overlay Canvas Renderer 模式。当使用Screen Space - CameraWorld 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)。

这可能是什么原因造成的?

【问题讨论】:

    标签: c# unity3d-2dtools


    【解决方案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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2018-01-16
      • 2016-05-12
      • 2019-01-13
      相关资源
      最近更新 更多