我可以';我不能让我的球员团结起来,用一个';弹性';物理材料应用

本文关键字:一个 应用 材料 弹性 起来 我的 不能 我可以 | 更新日期: 2023-09-27 18:00:41

我有一个带有刚体的GameObject和一个应用了"弹性"物理材料的BoxCollider。我希望对象始终反弹相同的高度,类似于涂鸦跳跃类型的游戏。我将物理材质的反弹度设置为1,根据我看过的几篇教程,这应该会使球在相同的高度反弹。我的场景很基本,没有发生太多事情,但我似乎无法让它发挥作用。有什么建议可以让我的物体一次又一次地反弹到同样的高度吗?

我可以';我不能让我的球员团结起来,用一个';弹性';物理材料应用

玩家的bounciness与他所击中表面的弹性相结合。在玩家物理材料中,将Bounce Combine设置为Maximum。这样,根据文档,它应该起作用,因为1bounciness意味着在没有任何能量损失的情况下反弹,而对于其他表面,你现在得到的是1的最大值,很可能小于1

但是,无论出于什么原因,你的球员现在每次反弹都会增加一点身高。我想是发动机的舍入误差。你可以试着摆弄bounciness0.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(例如)

相关文章: