【问题标题】:Infinite bouncing of ball (Unity)球的无限弹跳(Unity)
【发布时间】:2019-05-06 20:15:17
【问题描述】:

我目前正在创建一个简单的游戏,例如Angry Bird。所以我成功地创造了这样的东西,我目前面临一个问题,我想无限射击这只鸟,如果它撞到墙上,它应该会反弹回来,如果它再次撞到墙上,它会像无限一样反弹回来。

这是我的拍摄代码

public float force = 1300;

private void OnMouseUp()
{
    // Disable IsKenematic
    GetComponent<Rigidbody2D>().isKinematic = false;

    // Add the Force
    Vector2 dir = startPos - (Vector2)transform.position;
    GetComponent<Rigidbody2D>().AddForce(dir * force);


    //Remove the script (not the gameobject)
    Destroy(this);

}

编辑

只是添加一个信息,我正在使用 Physics 2D 材料 摩擦力:0.8 弹力:0.45

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    将游戏对象的 Rigidbody.Drag 设置为 0。

    有关 Drag 功能的更多信息:https://docs.unity3d.com/ScriptReference/Rigidbody-drag.html

    您也应该将 Rigidbody.GravityScale 设置为 0。

    如果你想控制恒速也改变 Rigidbody.Velocity.Magnitude。

    【讨论】:

    • 不,这不能解决我的问题。我希望我的对象(球)就像每次击中某物时都会继续弹跳的突破游戏\
    • 那么您还必须将gravityScale 设置为0 - 答案已编辑
    • 快到了我只需要调匀速
    • Rigidbody.Velocity.Magnitude 是你应该调整的 - 添加到答案
    • 我将它用于我的 2D 游戏,Magnitude 是您的游戏对象具有的速度矢量的大小,如果您想增加或减少对象的速度,您应该调整它。要增加它,请尝试 rb.velocity.magnitude += amountToIncrease;
    【解决方案2】:

    最初回答 HERE ,您可以将建议的 ZeroFriction 材料用于墙壁等。我在之前的一次尝试中使用过它,效果很好。

    【讨论】:

      【解决方案3】:

      是的,感谢大家的帮助,他们终于可以通过在刚体和物理 2d 材料上进行此设置来控制球

      刚体 全部拖走 重力为零

      物理二维材料 摩擦力为 0 弹性为 1

      谢谢你

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-24
        • 1970-01-01
        • 2013-05-23
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多