我有一个带有刚体的GameObject,还有一个BoxCollider,它有一个“弹性”的物理材料。我希望物体始终弹跳相同的高度,类似于涂鸦跳跃式游戏。我把物理材料的弹力设为1,根据我看过的几个教程,这应该能使球在相同的高度上弹跳。我的场景是非常基本的,没有什么发生,但我似乎无法使它发挥作用。有什么建议让我的目标一次又一次地弹跳同一高度吗?
发布于 2014-04-30 00:11:57
你的球员的bounciness和他击中的表面的弹性结合在一起。在玩家物理材料中,将Bounce Combine设置为Maximum。这样,就应该根据文档工作,因为bounciness of 1意味着在没有任何能量损失的情况下出现反弹,而对于其他表面,您现在取的是1的最大值,也是最可能小于1的值。
但是,无论出于什么原因,你的球员现在都会随着每一次弹跳而得到一点高度。我想是引擎出了个四舍五入错误。您可以尝试摆弄一个bounciness of 0.97或类似的东西,它可能会起作用。
如果你找不到甜点,或者它在所有设备上的表现都不一样,你可以自己实现弹跳,当玩家与表面碰撞时,你就可以倒转速度。
发布于 2019-02-28 18:26:22
我知道这个答案是迟到,但也许我的解决方案会对别人有所帮助。除了以上解决方案是解决整个问题的关键,您还可以将其放入脚本中。
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 (举我的例子)。
https://stackoverflow.com/questions/23352916
复制相似问题