【问题标题】:Problem when assigning Input.mousePosition to transform.position in Unity2D将 Input.mousePosition 分配给 Unity2D 中的 transform.position 时出现问题
【发布时间】:2019-09-29 19:05:50
【问题描述】:

我一直在关注 Kryzarel 的 Unity 库存教程,遇到了一个奇怪的问题,我认为这可能与某些无关。

大量的谷歌搜索没有产生任何结果。这似乎是一个晦涩难懂的问题。

https://www.youtube.com/channel/UCOM0GGMEcu-gyf4F1mT7A8Q/videos供频道参考。

但我遇到的问题是我执行以下操作:

draggableItem.transform.position = Input.mousePosition;

所以基本上可拖动项是对游戏对象上的图像组件的引用。我事先记录 Input.mousePosition 并且这些值是有意义的(在数百个范围内,例如 (563,262,0))。但是,变换位置与记录的数字相去甚远。例如,我看到的是 (48660.31, 23917.95, -7889.887)。提供 Input.mousePosition 的 debug.log 语句和将其分配给转换的代码之间没有逻辑。任何人都知道我可能配置错了什么,或者可能是错的?

我希望这个位置是 (563,262,0) 而不是它最终成为的荒谬数字。我试过localPosition 而不是transform.position,它有点 有效。因为它与我相对于鼠标移动的右上方大约有 500 或 700 的距离,所以我想避免像可能的情况下减去一些幻数这样的骇人听闻的解决方案。

编辑:一些进一步的背景,其他鼠标点击和鼠标相关的东西似乎可以正常工作。它是正交相机,或者是 unity2D 项目的默认设置

解决方案:在我的情况下,我能够根据接受的答案设置它,然后我必须修改 position 而不是 localPosition 并且还必须将世界点的 z 值归零。

【问题讨论】:

    标签: user-interface unity3d input transform


    【解决方案1】:

    鼠标位置是相对于您的屏幕,而不是您的世界。您需要将屏幕空间转换为世界空间:

     var pos = Camera.ScreenToWorldPoint(Input.mousePosition);
    

    【讨论】:

    • 抱歉,我一开始没有正确阅读您的问题,并且认为这对您没有帮助。如果您确认它没有帮助,我会删除它。
    • 实际上,这种方法工作了一半,在将 z 值归零之间,我能够得到正确的结果!!!还必须将 UI 元素移动到左下角锚点,但它提供了正确的坐标。
    • 太棒了!如果您正在使用 Ui,您可能需要查看 ReactTransformUtility
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多