【问题标题】:How to handle click on object?如何处理点击对象?
【发布时间】:2015-04-29 19:44:51
【问题描述】:

我尝试了一些处理对象点击的代码示例,但它们不起作用。

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

在主摄像头上有一个带有代码的 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!!!”中显示,但没有消息“点击对象!!!”显示出来了。

如何捕捉点击这个网格?

【问题讨论】:

  • 请不要使用unity 标签来回答与 Unity 游戏引擎相关的问题。在使用之前阅读标签描述通常是一个好主意。
  • 你没有在对象上安装 colider

标签: unity3d unityscript


【解决方案1】:
【解决方案2】:

检测碰撞的现代方法是实现IPointerClickHandler 接口,并确保场景中存在 EventSystem 和相关的 Raycaster(2d 或 3d,取决于您使用的碰撞器)。这比编写自己的代码来管理点击和指针位置要好得多。此外,游戏对象本身必须有一个Collider 组件。它可以是网格碰撞器,也可以是更通用(性能更好)的盒子碰撞器。

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2022-08-10
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多