在 Raycast 定位的对象之后执行 Raycast
Do a Raycast after Raycast-positioned object
我有一个代码允许通过 Raycast 将一个对象定位到另一个对象上。显然,我正在使用 Mesh Collider,所以一切正常。
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.GetComponent<SelectableTrunk>())
{
RandomSTrunk.position = hit.point;
}
}
我的问题是下一个。是否可以放置对象(就像我所做的那样),然后再进行一次光线投射以将另一个对象放置到已经放置的对象上?
当我尝试这样做时 - 第一个对象上的网格碰撞器破坏了一切,但没有任何效果。
为命中对象指定一个图层,然后按照下面的代码:
public LayerMask hitPlaceLayer;
void RayCast()
{
// first ray cast
if (Physics.Raycast(transform.position, transform.forward, out var hit, hitPlaceLayer.value))
{
RandomSTrunk.position = hit.point;
}
// second raycast
if (Physics.Raycast(transform.position, transform.forward, out hit, hitPlaceLayer.value))
{
otherRandomTrunk.position = hit.point;
}
}
为点击位置对象定义图层:
光线投射图层蒙版:
我有一个代码允许通过 Raycast 将一个对象定位到另一个对象上。显然,我正在使用 Mesh Collider,所以一切正常。
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider.gameObject.GetComponent<SelectableTrunk>())
{
RandomSTrunk.position = hit.point;
}
}
我的问题是下一个。是否可以放置对象(就像我所做的那样),然后再进行一次光线投射以将另一个对象放置到已经放置的对象上?
当我尝试这样做时 - 第一个对象上的网格碰撞器破坏了一切,但没有任何效果。
为命中对象指定一个图层,然后按照下面的代码:
public LayerMask hitPlaceLayer;
void RayCast()
{
// first ray cast
if (Physics.Raycast(transform.position, transform.forward, out var hit, hitPlaceLayer.value))
{
RandomSTrunk.position = hit.point;
}
// second raycast
if (Physics.Raycast(transform.position, transform.forward, out hit, hitPlaceLayer.value))
{
otherRandomTrunk.position = hit.point;
}
}
为点击位置对象定义图层:
光线投射图层蒙版: