SpriteKit&快速球速

时间:2016-09-25 22:43:27

标签: ios swift xcode sprite-kit skspritenode

我使用SpriteKit和Swift 3制作了一款游戏,除了游戏中球节点的速度外,他们已经找到了游戏的各个方面。我混淆了不同的函数applyImpulse()和ball.physicsBody.velocity,因为我已经测试了两者并且似乎并不真正理解我实际上以编程方式设置的速度。关于我应该使用什么的任何澄清都会很棒?

同样在测试时(通过每次碰撞将球的速度打印到控制台)我会发现,当球击中其他节点时,球的速度有时会变成一些长而随机的十进制值。一个桨,我没有特别编码任何与球碰撞时球的速度发生的事情。

总之,我将不胜感激:

  1. 关于SpriteKit中球速度的一般说明以及我应该如何接近它(我应该使用哪种方法/功能)

  2. 我怎么做到这样,球的速度没有达到这些非常长的随机小数

  3. 由于

1 个答案:

答案 0 :(得分:0)

关于价值观,对于冲动和力量的价值,实际上并没有固定的规则。它取决于你的精灵物理体的大小等等。对于1个精灵大小,80的冲量可能是一个完美的跳跃值,但是它的大小只有它的一半,80突然变高。重力,质量等因素也可能对此产生影响。 因此,您通常只需使用这些值,直到获得所需的结果。

关于与桨叶的碰撞,您需要检查位掩码值和动态属性。默认情况下,SpriteKit会将碰撞设置为所有对象,因此如果您没有明确告诉您的球拍/球相互忽略,它们将会发生碰撞。 还有一些东西,如恢复原状,摩擦力,阻尼等,会对碰撞时精灵的行为产生影响。 谷歌上有很多关于SpritKit物理/碰撞的教程,或者阅读苹果文档。

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

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

当身体处于模拟中时,更常见的是基于施加到身体的力来调节速度。另一个速度变化,碰撞的来源将在后面讨论。“

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

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

1)仅在创建物理实体时设置velocity属性。我还没有必要为我的游戏做这个。 我真正使用velocity属性的唯一一次是双跳,我需要将其设置为0以实现一致的双跳

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

2)当你正在玩游戏时

a)如果你想继续移动球,你应该使用

applyForce...

类似于SKScene的更新方法。

b)如果你想让你的球跳,所以基本上是一次短暂的事情,你应该使用

applyImpulse...

希望这有帮助