首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在世界空间中获取鼠标位置

无法在世界空间中获取鼠标位置
EN

Stack Overflow用户
提问于 2018-06-11 22:07:43
回答 2查看 2.3K关注 0票数 1

我几天前就开始摆弄Unity了,我不是编码专家,如果我错过了什么明显的东西,请原谅。

几个小时以来,我一直试图从屏幕上的一个物体到我在2D空间中点击的任何地方画一条线,但都失败了。我用谷歌搜索了一下,但找不到一个可行的解决方案。问题是当我点击的时候,直线是从物体画到相机的位置,而不是鼠标的位置。在这一点上我不知道该怎么办。我需要一些帮助。

以下是代码的简化版本。

代码语言:javascript
复制
public class test: MonoBehaviour {


public Rigidbody rb;
public Vector3 vect3;

void Start () {
    rb = GetComponent<Rigidbody>();

}

void Update () {

    if (Input.GetKey(KeyCode.Mouse0))
    {
        vect3 = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0); 
        //I made the vector's Z value 0 because the object's Z coordinate is also 0. 
        //It is to avoid capturing 3D coordinates. 
        Debug.DrawLine(rb.position, Camera.main.ScreenToWorldPoint(vect3), Color.red, 1);

    }

}

}

编辑:修复了代码中的一个方法错误。

edit2:我解决了这个问题。原来Camera.main.ScreenToWorldPoint的参数(vect3)的z变量表示距相机的距离,由于我将其值设为0,因此将直线直接绘制到相机。将vect3的z值更改为trans.postion.z-Camera.main.trans.position.z修复了这个问题。

EN

回答 2

Stack Overflow用户

发布于 2018-06-11 22:14:42

我希望我能理解你的问题。

您可以做的是将最后一个点存储为变量,并使用此变量来绘制下一条直线。

代码语言:javascript
复制
public class test: MonoBehaviour {

public Rigidbody rb;
public Vector3 lastPoint;

void Start () {
    rb = GetComponent<Rigidbody>();
}

void Update () {
    if (Input.GetKey(KeyCode.Mouse0))
    {
        Vector3 vect3 = new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0); 
        vect3 = Camera.main.ScreenToWorldPoint(vect3);
        //I made the vector's Z value 0 because the object's Z coordinate is also 0. 
        //This is to capture location in 2D space instead of 3D. This might be the problem. 
        if(lastPoint == null) {
             lastPoint = vect3,
             return;
        }
        Debug.DrawLine(lastPoint, vect3, Color.red, 1);
        lastPoint = vect3;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-11 22:26:31

Input.mouseposition在屏幕空间中给出一个位置(像素)。您需要使用ScreenToWorldPoint来获取鼠标相对于相机的位置。查看鼠标位置所需的文档如下:https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

编辑:误读你的问题。由于某种奇怪的原因,我不能删除我的答案,所以请忽略它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50799699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档