我正在尝试将光源从内部投射到球体。 我的主摄像头位置(0,0,0) 球体位置(0,0,0)半径:300 我想知道hit.position和hit.collider.gameobject 我正在尝试下面的教程。 http://answers.unity3d.com/questions/129715/collision-detection-if-raycast-source-is-inside-a.html
即使我尝试过教程,我也无法从控制台窗口看到理想的结果。 (我的控制台窗口中没有Debug.Log结果) 我该怎么办?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EyeTrackingPoint : MonoBehaviour
{
public float sphereRadius = 300; // position(0,0,0) radius 300
public GameObject screen3D; // sphere
public void Update()
{
Camera cam = Camera.main; // position(0,0,0)
RaycastHit hit;
Ray ray = new Ray(cam.transform.position,cam.transform.rotation * Vector3.forward * sphereRadius );
ray.direction = -ray.direction;
if (Physics.Raycast(ray,out hit)&&hit.collider.gameObject.Equals(screen3D))
{
Debug.Log(hit.point);
}
}
}
感谢您的阅读。
答案 0 :(得分:2)
{
RaycastHit hit = Physics.Raycast(start, direction, 1000f, 1<<10);
}
成功的光线投射信息保存在RaycastHit中; 1000f是一个浮点值,它限制了光线投射的范围。这样你可以控制它对象的查找范围。
如果你没有在光线投射中指定图层面板,它将返回第一个被任何类型的活动对撞机击中的对象,无论它在哪个层中。
答案 1 :(得分:0)
对撞机内部的射线广播不会产生碰撞。
if (Physics.Raycast(Vector3.zero, Vector3.up, 100))
Debug.Log("HIT");
如果球体位于世界0,0,0周围,则“ Hit”将永远不会在控制台中写入。当您将球体从原点移出,移出并移开时,您会看到它已打印。
这些都会影响背面。但是,您可以启用它,并启用“物理设置”中的复选框。也请参见c#上有关此参数的文档:https://docs.unity3d.com/ScriptReference/Physics-queriesHitBackfaces.html