获得点击事件传染媒介的团结

时间:2017-06-20 21:38:45

标签: unity3d vector click coordinates

我正在使用Unity的Vector3方法,ScreenToWorldPoint

简而言之,我可以点击GameObject上的任意位置并获取游戏中点击所在的Vector3。然而,我获得的结果是直接在相机前面的Vector3,而不是我真正点击场景中给定GameObject的表面。

我想要确切地点击GameObject表面上的坐标。

2 个答案:

答案 0 :(得分:2)

您希望从相机到对象进行Raycast。有关详情Manual: Rays from the camera

,请参阅帮助页面
using UnityEngine;
using System.Collections;

public class ExampleScript : MonoBehaviour {
    public Camera camera;

    void Start(){
        RaycastHit hit;
        Ray ray = camera.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit)) {
            Transform objectHit = hit.transform;

            // Do something with the object that was hit by the raycast.
        }
    }
}

答案 1 :(得分:0)

要获得Vector3的确切位置,请单击GameObject的表面,使用以下代码:

    RaycastHit hit;
    Ray ray;
    Camera c = Camera.main;
    Vector3 hitPoint;


    Rect screenRect = new Rect(0, 0, Screen.width, Screen.height);
    if (screenRect.Contains(Input.mousePosition))
    {
        if (c != null)
        {
            ray = c.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                // If the raycast hit a GameObject...
                hitPoint = hit.point; //this is the point we want
            }

        }
    }

我们在屏幕上用鼠标创建一条光线并将其投射到世界中,以计算鼠标在场景中的确切位置。