首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不能让我的球员团结起来,用弹跳的物理材料跳同样的高度

我不能让我的球员团结起来,用弹跳的物理材料跳同样的高度
EN

Stack Overflow用户
提问于 2014-04-28 23:27:40
回答 2查看 1.8K关注 0票数 2

我有一个带有刚体的GameObject,还有一个BoxCollider,它有一个“弹性”的物理材料。我希望物体始终弹跳相同的高度,类似于涂鸦跳跃式游戏。我把物理材料的弹力设为1,根据我看过的几个教程,这应该能使球在相同的高度上弹跳。我的场景是非常基本的,没有什么发生,但我似乎无法使它发挥作用。有什么建议让我的目标一次又一次地弹跳同一高度吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-30 00:11:57

你的球员的bounciness和他击中的表面的弹性结合在一起。在玩家物理材料中,将Bounce Combine设置为Maximum。这样,就应该根据文档工作,因为bounciness of 1意味着在没有任何能量损失的情况下出现反弹,而对于其他表面,您现在取的是1的最大值,也是最可能小于1的值。

但是,无论出于什么原因,你的球员现在都会随着每一次弹跳而得到一点高度。我想是引擎出了个四舍五入错误。您可以尝试摆弄一个bounciness of 0.97或类似的东西,它可能会起作用。

如果你找不到甜点,或者它在所有设备上的表现都不一样,你可以自己实现弹跳,当玩家与表面碰撞时,你就可以倒转速度。

票数 2
EN

Stack Overflow用户

发布于 2019-02-28 18:26:22

我知道这个答案是迟到,但也许我的解决方案会对别人有所帮助。除了以上解决方案是解决整个问题的关键,您还可以将其放入脚本中。

代码语言:javascript
复制
 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 (举我的例子)。

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

https://stackoverflow.com/questions/23352916

复制
相关文章

相似问题

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