我正在尝试在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,并且没有效果。
感谢和问候
答案 0 :(得分:2)
您可以通过更改项目设置中的某些值(基本上是“速度迭代”和“位置迭代”)来解决此问题。这将消耗更多的资源,但会产生更准确的移动,因此减少了“跳动”。您应该利用这些价值来找到最适合您的项目的东西。
我认为这是计算物理性的“采样率”的副作用,导致对象的微小重叠,然后被拒绝,从而产生这种弹力效果。您的“采样率”越高,碰撞检测越准确,但使用的资源越多。