光线投射总是击中
问题描述:
所以,我不习惯光线投射,这是我第一次使用它。基本上我试图用它来模仿鼠标点击,因为这个程序是用于触摸屏的,UI元素不是一个选项。该代码附加到世界上的3D游戏对象中,当我点击触摸屏时,我会看到它,我需要它来触发并加载不同的场景。然而,代码似乎总是被解雇,即使覆盖UI元素,无论我在哪里点击。大多数人似乎没有遇到光线投射问题,但我遇到了相反的问题。任何帮助,将不胜感激。光线投射总是击中
void Update(){
foreach (Touch touch in Input.touches) {
if (touch.phase == TouchPhase.Began) {
Ray ray = Camera.main.ScreenPointToRay (touch.position);
RaycastHit hit;
if (Physics.Raycast (ray, out hit)) {
if (hit.collider.gameObject)
SceneManager.LoadScene (buttonIdentifier);
}
}
}
}
答
甚至压倒一切的UI元素,不管我在哪里挖掘。
此问题及其他问题可以通过而不是使用raycast解决。只需执行IPointerClickHandler
并覆盖OnPointerClick
函数。之后,将PhysicsRaycaster
附加到相机。
下面的代码将为您做所有这些包括附加PhysicsRaycaster
。只需将脚本附加到想要检测点击的3D对象,就是这样。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
public class Clicker : MonoBehaviour, IPointerClickHandler
{
void Start()
{
Camera.main.gameObject.AddComponent<PhysicsRaycaster>();
}
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clicked!");
SceneManager.LoadScene(buttonIdentifier);
}
}
你的问题甚至没有描述你的问题。你想检测点击精灵?在画布上的图像?在3D网格上?目前发生了什么,你不喜欢? – Programmer
我编辑它,并希望澄清它。 – MechaScoots
我提供了一个答案。它有用吗? – Programmer