如何处理点击对象?

时间:2015-04-29 10:58:47

标签: unity3d unityscript

我已经尝试了一些代码来处理点击对象,但它们不起作用。

我在场景中有对象的网格: alt text

在主摄像头上有一个C#脚本组件,代码为:

using UnityEngine;
using System.Collections;

public class cameraAnim3 : MonoBehaviour
{

void Update() {
        if (Input.GetMouseButtonDown (0)) { // if left button pressed...
            print ("cli!!!");
            //   create a ray passing through the mouse pointer:
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast (ray, out hit)) { // if something hit...
                print ("clicked on object!!!");
                // if you must do something with the previously
                // selected item, do it here,
                // then select the new one:
                Transform selected = hit.transform;
                selected.gameObject.SetActive (true);
                print (selected.gameObject.name);
                // do whatever you want with the newly selected
                // object
            }
        }
    }

}

当我点击头部网格上的左键时,在控制台消息“cli !!!”中显示,但没有消息“点击对象!!!”被展示了。

如何抓住这个网格点击?

alt text

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

现代检测碰撞是为了实现IPointerClickHandler界面,并确保你有一个EventSystem和一个相关的Raycaster(2d或3d,取决于你使用的是什么对撞机)。它比编写自己的代码来管理点击和指针位置要好得多。此外,游戏对象本身必须具有Collider组件。它可以是网格对撞机,也可以是更通用(性能更好)的盒式对撞机。