unity3d 获取鼠标在世界空间中的位置

vmjh9lq9  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(204)

我正在使用Unity制作一个游戏,遇到了一个小问题,我需要知道鼠标在世界空间中的位置,为此,我尝试使用以下代码在鼠标位置设置一个GameObject:

Vector3 p = Input.mousePosition;
    Vector3 pos = Camera.main.ScreenToWorldPoint( p);
    testGameObject.transform.position = pos;

它的工作原理就像一个魅力编辑器,但在exe / apk,游戏对象不跟随鼠标:
Example 1
Example 2
应该跟随鼠标的游戏对象是圆圈内的“1”

q3qa4bjr

q3qa4bjr1#

如果它在编辑器中像一个魅力,那么它应该在构建。
我看到它已经在构建中工作了,也许你想要的是精确地放置你的对象以匹配屏幕点击点,但是你的对象离相机太近了,所以你看不到它。
可能是这个位置离摄像机的深度有问题。尝试添加类似于

Vector3 p = Input.mousePosition;
p.z = 20;
Vector3 pos = Camera.main.ScreenToWorldPoint(p);
testGameObject.transform.position = pos;

向鼠标位置添加深度。如果还是不行,试着把20改成-20

lndjwyie

lndjwyie2#

虽然这个问题很老我把它打出来了看起来还能用。
这可能是对ScreenToWorldPos工作方式的误解,
它给你一个位置,从x,y坐标上的二维轴的屏幕,然后使用z作为一个三维深度探测器,基本上给出了一个看似随机的位置。
解决方案;尝试创建一条射线并使用ScreenPointToRay(p)指定给它,然后投射该射线,它应该在3D中给予预期的结果,因为它只是使用鼠标光标投射的常规射线,而不是仅仅尝试使用矢量找到世界位置。

相关问题