我已经看到这个问题问https://stackoverflow.com/questions/54656220/physics-object-doesnt-bounce-correctly-at-low-speed-in-unity,但这适用于Unity3D,而我是在Unity2D工作。
我的主要问题是,在我的统一2D游戏中的球不能正确反弹时,速度被设置为一个较低的值,但工作良好,在更快的速度。请注意,我已经尝试更改项目设置中的反弹阈值,但它并没有解决我的问题。我已经应用了一个Rigidbody2D组件,BoxCollider2D,和一个物理材料2D,它应该使球有弹性。
下面是我当前的一些设置(如果这有帮助的话):
Rigidbody2D设置:
物理材料2D设置:
以下是当游戏加载启动球运动时运行的一些初始化代码:
float x = Random.value < 0.5f ? -0.75f : 0.75f;
float y = Random.value < 0.5f ? Random.Range(-0.75f, -0.5f) : Random.Range(0.5f, 0.75f);
Vector2 direction = new Vector2(x, y);
rb.AddForce(direction * speed);注意:这段代码位于我为球形对象创建的用于管理物理操作的自定义类(继承MonoBehavior)中。
有关更多信息,请参考这段视频查看游戏的响应。
对于我的比赛来说,速度慢一点是必要的,如果我能在这个问题上得到一些帮助,我会非常感激的。
发布于 2022-02-01 23:23:27
统一物理系统是不确定的,不承诺能量守恒或其他特性。如果你想微调你的物理系统到这样的程度,你可以考虑使用其他方法来控制球的速度。
但是如果你想继续使用内置的物理引擎,你可以考虑使用更快的速度和降低时间刻度来补偿。
例如:
float x = Random.value < 0.5f ? -3f : 3f;
float y = Random.value < 0.5f ? Random.Range(-3f, -2f) : Random.Range(2f, 3f); 在Start或Awake的某个地方
Time.timeScale = 0.25f;你可能会想要增加你的桨的速度,以及补偿时间刻度的变化。
另一种选择是使用更快的速度,增加所有东西的大小,并使相机视图更大,使一切看起来都一样大小。需要更少的代码更改,但可能需要更多的场景/组件更改。
https://stackoverflow.com/questions/70948245
复制相似问题