我可以';我不能让我的球员团结起来,用一个';弹性';物理材料应用
本文关键字:一个 应用 材料 弹性 起来 我的 不能 我可以 | 更新日期: 2023-09-27 18:00:41
我有一个带有刚体的GameObject和一个应用了"弹性"物理材料的BoxCollider。我希望对象始终反弹相同的高度,类似于涂鸦跳跃类型的游戏。我将物理材质的反弹度设置为1,根据我看过的几篇教程,这应该会使球在相同的高度反弹。我的场景很基本,没有发生太多事情,但我似乎无法让它发挥作用。有什么建议可以让我的物体一次又一次地反弹到同样的高度吗?
玩家的bounciness
与他所击中表面的弹性相结合。在玩家物理材料中,将Bounce Combine
设置为Maximum
。这样,根据文档,它应该起作用,因为1
的bounciness
意味着在没有任何能量损失的情况下反弹,而对于其他表面,你现在得到的是1
的最大值,很可能小于1
。
但是,无论出于什么原因,你的球员现在每次反弹都会增加一点身高。我想是发动机的舍入误差。你可以试着摆弄bounciness
或0.97
之类的东西,它可能会起作用。
如果你找不到最佳点,或者它在所有设备上的表现都不一样,你可以自己实现反弹,只要玩家与表面碰撞,就可以反转速度。
我知道这个答案太晚了,但也许我的解决方案会帮助其他人。除了上面的解决方案,这是解决整个问题的关键,你可以把它放在你的脚本中
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag.Equals("ground"))
rigidbody.velocity = new Vector2(rigidbody.velocity.x, 0); // set y velocity to zero
rigidbody.AddForce(new Vector2(0, 400)); // some constant force here
}
}
如果你只使用上面的答案,当你有两个Y位置不同的球时,你会遇到问题,因为那里的弹跳高度不一样,我的解决方案是将球的Y速度重置为0,并再次将其强制为400(例如)