首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么物体不能在统一2D中以较低的速度正确反弹?

为什么物体不能在统一2D中以较低的速度正确反弹?
EN

Stack Overflow用户
提问于 2022-02-01 22:14:28
回答 1查看 304关注 0票数 0

我已经看到这个问题问https://stackoverflow.com/questions/54656220/physics-object-doesnt-bounce-correctly-at-low-speed-in-unity,但这适用于Unity3D,而我是在Unity2D工作。

我的主要问题是,在我的统一2D游戏中的球不能正确反弹时,速度被设置为一个较低的值,但工作良好,在更快的速度。请注意,我已经尝试更改项目设置中的反弹阈值,但它并没有解决我的问题。我已经应用了一个Rigidbody2D组件,BoxCollider2D,和一个物理材料2D,它应该使球有弹性。

下面是我当前的一些设置(如果这有帮助的话):

Rigidbody2D设置:

  • 车身类型:动态
  • 材料:弹力(我的物理材料的名称)
  • 模拟:真
  • 使用自动质量:假
  • 质量:1
  • 线性拖动:0
  • 角阻力:0
  • 重力标度:0
  • 碰撞检测:离散
  • 睡眠模式:开始清醒
  • 内插:无

物理材料2D设置:

  • 摩擦力:0
  • 弹力:1

以下是当游戏加载启动球运动时运行的一些初始化代码:

代码语言:javascript
复制
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)中。

有关更多信息,请参考这段视频查看游戏的响应。

对于我的比赛来说,速度慢一点是必要的,如果我能在这个问题上得到一些帮助,我会非常感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-01 23:23:27

统一物理系统是不确定的,不承诺能量守恒或其他特性。如果你想微调你的物理系统到这样的程度,你可以考虑使用其他方法来控制球的速度。

但是如果你想继续使用内置的物理引擎,你可以考虑使用更快的速度和降低时间刻度来补偿。

例如:

代码语言:javascript
复制
float x = Random.value < 0.5f ? -3f : 3f; 
float y = Random.value < 0.5f ? Random.Range(-3f, -2f) : Random.Range(2f, 3f); 

StartAwake的某个地方

代码语言:javascript
复制
Time.timeScale = 0.25f;

你可能会想要增加你的桨的速度,以及补偿时间刻度的变化。

另一种选择是使用更快的速度,增加所有东西的大小,并使相机视图更大,使一切看起来都一样大小。需要更少的代码更改,但可能需要更多的场景/组件更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70948245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档