如何增加碰撞/撞击面积

时间:2018-12-21 02:57:44

标签: unity3d

因此,出于背景原因,我正在尝试制作我的第一款游戏,它基本上是一款3D破砖游戏。我的问题更多是与设计相关的,任何帮助将不胜感激!

我创建了一个基本立方体的集合,这些立方体形成了较大的形状,并将其作为一个空游戏对象的父元素。然后,我有了一个球/球,它可以与立方体碰撞并按预期破坏与之接触的立方体。

现在,我希望做的是在不同情况下让球造成更大的伤害,即。破坏更多的多维数据集。我尝试过增加球的大小-这种方法在一定程度上有效,但取决于撞击角度。我还尝试了在碰撞点实例化另一个球体以触发更多碰撞。这似乎没有一定效果。

我确信必须对此有一个明确的答案。如何增加球/球的“撞击”面积?有没有办法让它一直朝着相同的方向移动,直到摧毁了许多立方体?

我所有的对撞机材料都设置了1的反弹。

1 个答案:

答案 0 :(得分:2)

不确定如何使球保持运动,但是我有一个解决方案,可以一次摧毁多个积木。由于所有球体都有对撞机,因此可以使用OverlapSphere。这将检查特定半径范围内的所有对撞机。

private void DestroyMultiple(Vector3 hitBrickPosition)
{
    int radius = 4; //insert whatever radius you prefer
    Collider[] colliders = Physics.OverlapSphere(hitBrickPosition, radius);
    foreach(Collider col in colliders)
    {
         Destroy(col.gameObject);
    }
}

或者,如@zyonneo所说,您可以通过collider.radius来增加球的对撞机半径的大小。但是,这会增加从球中心开始的半径,这意味着它将在甚至击中砖块之前将其破坏。可以通过在增加半径时移动轴心点来避免这种情况,但这太复杂了。