C# 在不相交的情况下从光线投射实例化

C# 在不相交的情况下从光线投射实例化,c#,unity3d,instantiation,C#,Unity3d,Instantiation,所以我想知道如何在Unity3D中实例化一个没有交集的游戏对象。现在,球体实例化与我用光线投射击中的对象相交。我正在使用hit.point的位置,但想知道是否有办法在碰撞中而不是在对象的原点生成它。以下是我的代码供参考: 使用系统集合; 使用System.Collections.Generic; 使用UnityEngine; 公共类Ballpawn:单行为 { 公共长度=100; 公共游戏对象; //在第一帧更新之前调用Start void Start() { } //每帧调用一次更新 无效更新

所以我想知道如何在Unity3D中实例化一个没有交集的游戏对象。现在,球体实例化与我用光线投射击中的对象相交。我正在使用hit.point的位置,但想知道是否有办法在碰撞中而不是在对象的原点生成它。以下是我的代码供参考:

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类Ballpawn:单行为
{
公共长度=100;
公共游戏对象;
//在第一帧更新之前调用Start
void Start()
{
}
//每帧调用一次更新
无效更新()
{
//Input.GetMouseButton用于无限
if(输入。GetMouseButton(0))
{
产卵球();
}
}
公共球()
{
雷卡斯特击中;
Debug.DrawRay(transform.position,transform.TransformDirection(Vector3.forward)*castLength,Color.green,Mathf.Infinity);
if(物理.光线投射(transform.position,transform.TransformDirection(Vector3.forward),命中率,投射长度))
{
实例化(对象、点击、点击、变换、旋转);
}
}
}

您可以尝试将
命中点
替换为
命中点+hit.normal*球半径
(当然,您必须知道或能够获得球半径)。但这会导致某些繁殖位置被关闭,特别是当你在小角度下撞击表面时


更好的替代方法是使用
Physics.SphereCast(transform.position、sphereRadius、transform.forward、out hit、castdestance)替换光线投射。
。这应该会给您带来好的结果,但您仍然需要像光线投射一样沿命中法线添加球半径。

“想知道是否有办法在碰撞中而不是在对象的原点上生成球半径”。碰撞点实际上就是碰撞点。勾选@rustyBucketBay,他可能意味着碰撞/起源于派生对象的POW。因此,派生对象的碰撞“框”。现在,我有了球体,这是我的衍生对象。每当我试着繁殖它时,它就会穿过地板弹出来。我想让它产生,就像我只是把球体放在地面上一样,只是为了澄清。这两种方法都不起作用。同样的结果仍然存在。我已经测试过了,球在表面上繁殖。以下是我使用的确切代码: