【问题标题】:Falldown Game with Unity使用 Unity 的跌倒游戏
【发布时间】:2015-07-16 00:39:00
【问题描述】:

我正在使用 Unity3d 开发类似 Falldown 的游戏。 所以我的问题是: 如何让球匀速下落并增加跳跃能力? 问题是,随着时间的推移,球越来越多地被拉下来,因为重力。 因此,如果我只想不断下降,我会使用,例如,

void Update () {
    rigidbody.velocity = new Vector3(rigidbody.velocity.x, -500, rigidbody.velocity.z);
}

对于跳跃,我可以使用:

rigidbody.AddForce(new Vector3(0,500,0), ForceMode.Impulse);

但是我不知道如何同时实现跳跃和下降:(

请帮帮我:)

【问题讨论】:

    标签: unity3d unityscript


    【解决方案1】:

    因此,Unity 为我们提供了通过力或通过明确设置它们的状态(如速度、旋转、加速度)与刚体交互的选项。一个好的一般规则是一个对象只能以这些方式中的一种来实现。显式和通过物理引擎作用的对象可能会产生“奇怪”的行为,就像您在这里遇到的一样!

    在您提出的解决方案中,您通过一个力(使其跳跃)和一个明确的集合(使脊体以固定速度下落)作用于您下落的物体。如果您启用了对象物理,它也会受到力的影响!如果我们有兴趣编写尽可能“最好”的 Unity 脚本,我们可能应该只选择一个系统(强制或显式)。

    你有几个选择。

    1) 我希望这是您想要去的路线。

    如果您希望您的下落对象由 Unity 物理引擎管理,那么您的跳跃命令看起来不错(因为向物理对象添加力是可以的)但是显式设置下落速度会破坏我们的范例(因为现在我们正在交互通过设置值和施加力来处理对象)。

    不过,好消息是,我们可以通过用力“推动”我们坠落的物体来产生任何我们想要的坠落行为。为了阻止我们的物体加速超过某个阈值,我们可以做这样的事情来抵消重力的进一步拉动:

    if(rigidbody.velocity.y >= max_speed)
      rigidbody.AddForce(new Vector3(0.0f,-1*Physics.gravity,0.0f));
    

    当然,这不是一个完美的解决方案。如果你这样做,你的物体的最大速度会有一些微小的差异。但希望它能让你走上正确的轨道,你可以根据自己的喜好进行调整。 (考虑在物体达到一定速度后“关闭”物体的重力。老实说,你觉得最自然的东西。只要你不设置明确的属性(你仍然可以看!)你做得很好。 )

    2) 如果您不需要 Unity 的物理引擎来作用于您的对象(听起来不像这种情况),您可以通过使跳转命令简单地向对象的y 速度。但请记住,一旦你走下这条路,不建议你的对象受到力的作用——即使是通过 Unity 物理引擎。

    3) 选项 3 是忽略“规则”并利用您在帖子中提供的解决方案。为了让它“工作”,看起来你需要做的就是检查你的下落速度,看看球的下落速度是否比可接受的快,如果是这种情况,只应用你的明​​确速度:

    在您的对象上启用或模拟重力,并且:

    if(ridgidbody.velocity.y < -500)
      rigidbody.velocity = new Vector3(rigidbody.velocity.x, -500, rigidbody.velocity.z);
    

    然后,使用物理来管理跳跃、正常坠落和碰撞。

    这可能是您“最快”的解决方案。但请注意,如果您的游戏变得足够复杂,它可能会反过来咬您一口。


    希望对你有帮助,

    -扎克

    【讨论】:

      【解决方案2】:

      Zach 有一个很好的答案,但作为附加选项...

      RidgidBody 具有约束(或冻结)x、y 和 z 的能力。

      这会消除重力和速度,因此您可以打开和关闭冻结位置 y。

      在冻结/解冻命令之后或之间立即运行跳跃能力。

      预先计算的动量不会影响物体,因为它会自动设置为零。

      我认为这是一种更快的解决方法,但除了简单的原型制作之外,我不推荐它。

      希望这会有所帮助:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-13
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 2012-04-25
        相关资源
        最近更新 更多