Unity检查是否单击了对象

时间:2014-11-10 08:54:29

标签: c# unity3d

请记住,我是团结的新手。我创建了一个2D安卓游戏应用程序。

我创建了一个开始按钮(来自图像),并将一个Box colider和一个C#脚本附加到它上面。

当我点击"按钮"我希望程序移动到下一个" Level",除了我希望它只在我点击对象而不是在游戏的任何地方工作时才工作。

这是C#:

using UnityEngine;
using System.Collections;

public class StartGame : MonoBehaviour {


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    if (Input.GetMouseButtonDown(0)) {
        Application.LoadLevel("Game");
    }

}

}

我搜索了很多关于这一点,也许有人说要解决这个问题你必须使用,RayRaycastHit但是我也不能这样做。

以下是我尝试使用Ray& RaycastHit

// Update is called once per frame
void Update () {
    if ((Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) || (Input.GetMouseButtonDown(0))) 
    {
        RaycastHit hit;

        Ray ray;

        #if UNITY_EDITOR
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        #elif (UNITY_ANDROID || UNITY_IPHONE || UNITY_WP8)
        ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position);
        #endif

        if(Physics.Raycast(ray, out hit))
        {
            Application.LoadLevel("Game");
        }
    }
}

任何帮助都会如此苛刻。

1 个答案:

答案 0 :(得分:5)

最简单的方法可能是在游戏对象中添加包含以下功能的框架对撞机和脚本组件。

void OnMouseOver()
{
    if (Input.GetMouseButtonDown(0))
    {
        Application.LoadLevel("Game");
    }
}

修改

我猜测原始代码无法在您的场景中运行,因为您使用的是box collider 2dPhysics.Raycast正在测试3D对撞机。当我使用3D版本box collider运行它时,它可以正常工作。