C# 作为指针的统一十字线
我有一个3d Unity游戏,世界空间中几乎没有3d对象。我在相机空间有一个十字线。当十字线穿过每个3d对象时,我会编写一个指针进入和指针退出事件。移动手机时,十字线移动,但3d对象仍停留在世界空间中。十字线不能用作指针。虽然触摸事件正在工作,但我无法将十字线作为指针。我在相机上添加了物理光线投射。C# 作为指针的统一十字线,c#,unity3d,C#,Unity3d,我有一个3d Unity游戏,世界空间中几乎没有3d对象。我在相机空间有一个十字线。当十字线穿过每个3d对象时,我会编写一个指针进入和指针退出事件。移动手机时,十字线移动,但3d对象仍停留在世界空间中。十字线不能用作指针。虽然触摸事件正在工作,但我无法将十字线作为指针。我在相机上添加了物理光线投射。 我犯了什么错误?好的,所以您试图在非UI对象上使用事件(可选的.OnPointerEnter) 假设您在屏幕空间中有十字线位置,我强烈建议使用附加到摄影机对象的脚本,尽管它可以简单地引用摄影机实例。
我犯了什么错误?好的,所以您试图在非UI对象上使用事件(可选的.OnPointerEnter) 假设您在屏幕空间中有十字线位置,我强烈建议使用附加到摄影机对象的脚本,尽管它可以简单地引用摄影机实例。我们可以将其与“hitObject”结合使用,以触发自定义十字线进入/退出/悬停事件,如下所示: CameraPointer.cs:
using UnityEngine;
using System.Collections;
[RequireComponent(typeof(Camera))]
public class CameraPointer : MonoBehaviour {
private GameObject hitObject = null;
private Vector3 reticlePosition = Vector3.zero;
private Camera camera;
void Awake() {
camera = GetComponent<Camera>();
}
// Update is called once per frame
void Update () {
// TODO: Replace with reticle screen position
reticlePosition = Input.mousePosition;
// Raycast variables
Ray ray = camera.ScreenPointToRay(reticlePosition);
RaycastHit hit;
// Raycast
if (Physics.Raycast(ray, out hit)) {
if (hitObject != hit.transform.gameObject) {
if (hitObject != null) {
hitObject.SendMessage("OnReticleExit"); // Trigger "OnReticleExit"
}
hitObject = hit.transform.gameObject;
hitObject.SendMessage("OnReticleEnter"); // Trigger "OnReticleEnter"
} else {
hitObject.SendMessage("OnReticleHover"); // Trigger "OnReticleHover"
}
} else {
if (hitObject != null) {
hitObject.SendMessage("OnReticleExit"); // Trigger "OnReticleExit"
}
hitObject = null;
}
}
}
using UnityEngine;
using System.Collections;
public class MyObject : MonoBehaviour
{
// Custom reticle events
void OnReticleEnter()
{
Debug.Log("Entering over " + this.name);
}
void OnReticleExit()
{
Debug.Log("Exiting over "+this.name);
}
void OnReticleHover()
{
Debug.Log("Hovering over "+this.name);
}
}
非常感谢您的帮助…我正在实施…将尽快让您知道…我收到一条警告“如果要隐藏继承的相机,请使用新关键字…”不工作…我只是在尝试…我接受你的答案…有没有可能把你的单位包装文件…如果你不介意…非常感谢…不知道…如何感谢你帮助了一个陌生人…向你致敬…上帝保佑…我会尽我所能感谢你的。我明白了。