User interface 将Input.mousePosition指定给Unity2D中的transform.position时出现问题
我一直在关注Kryzarel的Unity目录教程,遇到了一个奇怪的问题,我认为可能是因为一些无关的东西 大量的谷歌搜索没有结果。这似乎是一个模糊的问题 供本频道参考 但我遇到的问题是我做了以下工作:User interface 将Input.mousePosition指定给Unity2D中的transform.position时出现问题,user-interface,unity3d,input,transform,User Interface,Unity3d,Input,Transform,我一直在关注Kryzarel的Unity目录教程,遇到了一个奇怪的问题,我认为可能是因为一些无关的东西 大量的谷歌搜索没有结果。这似乎是一个模糊的问题 供本频道参考 但我遇到的问题是我做了以下工作: draggableItem.transform.position = Input.mousePosition; 所以基本上,可拖动项是对游戏对象上图像组件的引用。我将Input.mousePosition记录在手边,并且这些值是有意义的(在数百个范围内,例如(563262,0))。但是,变换位置与
draggableItem.transform.position = Input.mousePosition;
所以基本上,可拖动项是对游戏对象上图像组件的引用。我将Input.mousePosition记录在手边,并且这些值是有意义的(在数百个范围内,例如(563262,0))。但是,变换位置与记录的数字相差甚远。例如,我看到(48660.3123917.95,-7889.887)。给出Input.mousePosition的debug.log语句与将其分配给转换的代码之间没有逻辑。有人知道我可能配置错了什么吗
我希望这个职位是(563262,0),而不是它最终的荒谬数字。我尝试了localPosition
而不是transform.position
,它有点奏效。在我相对于鼠标移动的右上角大约有500或700,如果可能的话,我想避免像减去一些魔法数字这样的黑客解决方案
编辑:一些进一步的背景,其他鼠标点击和鼠标相关的东西似乎工作正常。它是正交摄影机,或unity2D项目的默认摄影机
解决方案:在我的情况下,我能够根据接受的答案设置它,然后我必须修改
位置
而不是本地位置
,还必须将世界点的z值归零。鼠标位置是相对于屏幕的,而不是相对于世界的。您需要使用以下工具将屏幕空间转换为世界空间:
var pos = Camera.ScreenToWorldPoint(Input.mousePosition);
鼠标位置是相对于屏幕的,而不是相对于世界的。您需要使用以下工具将屏幕空间转换为世界空间:
var pos = Camera.ScreenToWorldPoint(Input.mousePosition);
对不起,一开始我没有正确阅读你的问题,我认为这对你没有帮助。如果你确认它没有帮助,我会删除它。事实上,这种方法起到了一半的作用,在这和归零z值之间,我能够得到正确的结果!!!还必须将UI元素移动到左下角,但它提供了正确的坐标。太好了!如果您使用的是Ui,您可能想查看抱歉,我起初没有正确阅读您的问题,并且认为这对您没有帮助。如果你确认它没有帮助,我会删除它。事实上,这种方法起到了一半的作用,在这和归零z值之间,我能够得到正确的结果!!!还必须将UI元素移动到左下角,但它提供了正确的坐标。太好了!如果您正在使用Ui,您可能希望签出