Unity3D Physics2D禁用变形

时间:2019-03-18 13:15:26

标签: unity3d game-physics physics

我正在尝试在Unity中使用Physics2D,并将各个块相互叠加。 我的项目设置:

我有一个精灵与Box2D对撞机作为地板。我有一个预制件,它也是1.5 x 0.5 x 1比例的精灵,还有一个盒子碰撞器和一个刚体2D。

我要做的是将块放置在同一x轴上彼此重叠: 这是我的代码:

public GameObject testInstance; //Prefab Box
public float m_fSpawnY = -3.1f; //Start Y for first box
public float m_fSpawnYAdd = 0.5f; //for next box


// Update is called once per frame
void Update()
{
    if (Input.GetKeyDown(KeyCode.N))
    {
        Instantiate(testInstance, new Vector3(0, m_fSpawnY , 0), Quaternion.identity);
        m_fSpawnY += m_fSpawnYAdd ;
    }
}

我现在的问题是,我添加的盒子越多,下面的对象被“挤压”的越多,这对于真实的物理物理学可能是正确的,但是对于我的用例,我想完全禁用变形,因为构建塔可以我放在顶部的位置越不稳定。

是否可以通过某种方式停用变形?我尝试使用Physics Material 2D,但它仅产生摩擦和弹性,但我将boucyness设置为0,并且没有效果。

感谢和问候

1 个答案:

答案 0 :(得分:2)

您可以通过更改项目设置中的某些值(基本上是“速度迭代”和“位置迭代”)来解决此问题。这将消耗更多的资源,但会产生更准确的移动,因此减少了“跳动”。您应该利用这些价值来找到最适合您的项目的东西。

我认为这是计算物理性的“采样率”的副作用,导致对象的微小重叠,然后被拒绝,从而产生这种弹力效果。您的“采样率”越高,碰撞检测越准确,但使用的资源越多。