【问题标题】:Unity3D Physics2D disable deformationUnity3D Physics2D禁用变形
【发布时间】:2019-03-18 13:15:25
【问题描述】:

我正在尝试在 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,它没有任何效果。

感谢和问候

【问题讨论】:

  • 嗨,您的对象在哪里生成?高于所有其他对象或“内部”?因为根据我的测试,当生成位置与另一个盒子碰撞时,我有这种“挤压”效果,然后盒子移动以摆脱看起来像盒子被挤压的碰撞。那是你的吗?
  • 您好,感谢您的快速答复。我在 prev 块上方一点点生成块,它开始通过重力下落,块以这种方式堆叠。我拥有的块越多,由于顶部其他块的压力,塔被挤压的越多=>它看起来像一个橡胶塔,在顶部产生几个块后它变得完全不稳定并且塔分崩离析。我也尝试增加密度,但它也增加了质量(仅适用于自动质量),我有同样的效果。我想要一些不会被挤压的木块之类的东西。
  • 您是否有结果的图像以确保我们谈论的是同一个“挤压”?
  • 我把我的项目的assest文件夹放到了google drive:drive.google.com/drive/folders/…如果你在播放模式下按N,就会产生一个块,如果你这样做几次,你会看到它的弹性

标签: unity3d game-physics physics


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答。那么有没有办法防止物体变形呢?我想建造一个盒子塔,它也应该在移动设备上工作。这有点像在现实中将木块叠放在一起。如果没有风等其他干扰力,我可以堆叠数百个积木而不影响稳定性(如果我将积木完美地放在中心),所以塔应该只受每个积木的质量点的影响,而不是关于所有块的压力及其导致的不稳定......现在,我不知道如何实现这一目标
  • 如果块不必落在另一个上而只是在它们上面创建,你可以手动移动它们,这样你就不会遇到“弹性”问题,然后物理就可以了其余的工作。
  • 这就是我正在尝试的,但是我放在顶部的次数越多,下面的块得到的压力就越大,并且塔再次变得不稳定...... :(它不仅有弹性,还有重力本身,因为重力是当然总是应用,但是对撞机可以防止坠落,但是物体越多,重力对塔的影响越大,它就会坠落。我正在考虑停用重力,然后它会起作用,但是如果方块没有放在中间,那么塔就不会坠落...
  • 您可以通过以下设置在我的项目中看到这种效果: - 地面精灵缩放 y 1 和位置到 0/0/0 - 附加组件的主相机值到 Spawn Y 0.75 和 Spawn Y Add 0.5 - 当您点击播放并开始游戏并继续通过“N”放置对象时,您会看到整个塔越来越受到挤压,有时它会分崩离析
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多