gpt4 book ai didi

ios - SpriteKit 和 Swift 球速

转载 作者:行者123 更新时间:2023-12-01 22:29:01 25 4
gpt4 key购买 nike

我使用 SpriteKit 和 Swift 3 制作了一个游戏,并且已经弄清楚了游戏的所有方面,除了游戏中球节点的速度。我对不同的函数 applyImpulse() 和 ball.physicsBody.velocity 感到困惑,因为我已经测试了这两个函数,但似乎并没有真正理解我实际上以编程方式设置的速度是多少。关于我应该使用什么的任何澄清会很棒吗?

同样在测试时(通过在每次碰撞时将球的速度打印到控制台)我会看到有时球的速度会在撞击其他节点(例如我没有专门编写任何代码的桨)时简单地变成一些长而随机的十进制值在与球发生碰撞的情况下发生球的速度。

总之,我将不胜感激:

  • 只是关于 SpriteKit 中球的速度的一般说明以及我应该如何接近它(我应该使用什么方法/功能)
  • 我将如何做到让球的速度不会达到这些非常长的随机小数

  • 谢谢

    最佳答案

    关于值(value)观,对于冲动和力量的值(value)观,并没有真正的固定规则。这取决于你的 Sprite 物理体有多大等等。对于 1 个 Sprite 大小,80 的脉冲可能是一个完美的跳跃值,但比让它缩小一半,80 突然就很高了。还有一些因素,如重力、质量等,会对此产生影响。
    所以你通常只是玩弄这些值,直到你得到想要的结果。

    关于与桨的碰撞,您需要检查您的位掩码值和动态属性。 SpriteKit 默认为所有对象设置碰撞,所以如果你没有明确告诉你的桨/球忽略彼此,它们就会发生碰撞。
    还有一些诸如恢复、摩擦、阻尼等因素会影响 Sprite 在碰撞时的行为。
    谷歌上有大量关于 SpritKit 物理/碰撞的教程或阅读苹果文档。

    关于速度和冲量/力之间的差异,根据苹果文档

    “首先,您可以通过设置其速度和 angularVelocity 属性直接控制物理体的速度。与许多其他属性一样,您通常在首次创建物理体时设置一次这些属性,然后让物理模拟根据需要调整它们。例如,假设您正在制作一个太空游戏,其中火箭飞船可以发射导弹。当飞船发射导弹时,导弹应该有飞船的起始速度加上发射方向的额外矢量.

    当 body 处于模拟中时,更常见的是根据施加在 body 上的力来调整速度。速度变化的另一个来源,碰撞,将在后面讨论。”

    https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html

    所以基本上一般的经验法则是这样的:

    1) 仅在创建物理体时设置速度属性。我从来不需要为我的游戏这样做。
    我真正使用速度属性的唯一一次是用于诸如双跳之类的事情,我需要将其设置为 0 以获得一致的双跳

     ...velocity.dy = 0
    ...applyImpulse(

    2)当你已经在玩游戏时

    a) 如果你试图连续移动你的球,你应该使用
    applyForce...

    类似于您的 SKScene 的更新方法。

    b)如果你想让你的球跳起来,所以基本上是短的 1 次,你应该使用
    applyImpulse...

    希望这可以帮助

    关于ios - SpriteKit 和 Swift 球速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39692513/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com