【问题标题】:SpriteKit linearDamping - maximum?SpriteKit 线性阻尼 - 最大?
【发布时间】:2017-11-12 20:32:54
【问题描述】:

注意 Apple 的 doco 断言

https://developer.apple.com/documentation/spritekit/skphysicsbody/1519796-lineardamping

此属性用于模拟身体上的流体或空气摩擦力。该属性的值必须介于 0.0 和 1.0 之间。默认值为 0.1。如果值为 0.0,则不会对对象应用线性阻尼。

事实上:您可以设置大于一的值 - 因此,“10.0”和“20.0”可以完美运行; 1、10 和 20 都非常明显不同。

  • 有没有人对此进行过调查并发现实际上是否存在最大值? (如果只是渐近线,实际范围是多少?)

【问题讨论】:

  • linearDamping 是速度 = 速度 / (1 + 时间 * 阻尼),因此任何大于 1 的值都将超出该帧的阻力范围。这意味着阻尼效应将对时间帧变得敏感,帧的不一致可能导致结果不一致,这正是 Box2D 所说的。所以文档确实应该说强烈推荐,除非苹果在其中放置了一个检查,不允许公式在计算中使用大于 1 的值
  • 为什么会不正确?如果时间为 1,阻尼为 0.5,速度为 100,则 100 = 100 / (1 + 1 * 0.5),100 = 100 / 1.5,因此 1 秒后的速度为 66.666
  • 这意味着你最终可能会遇到阻力可能会导致实际上给你速度的效果
  • 这是Box2D使用的公式,是Physics Kit作为其基础的物理引擎
  • 不,它不是基于帧,它是基于帧之间的时间量

标签: ios sprite-kit cocos2d-iphone


【解决方案1】:

Apple doco 完全是错误的。

只是为了回答我自己的问题,在 iOS 中:

实际文档:

此属性用于模拟身体上的流体或空气摩擦力。该属性必须是介于 0.0 和 1.0 之间的值。默认值为 0.1。如果值为 0.0,则不会对对象应用线性阻尼。

只是错误。

当您需要典型的“强阻尼”(如许多物理场景中)时,典型值约为 10 到 15。

我经常使用 2 或 3 的值。而“10”是我们对“非常浓稠的蜂蜜”的值。

【讨论】:

  • 您是否遇到过不同设备的问题,即相同的线性阻尼值在 iPad 和 iPhone 之间产生不同的影响?
  • 很高兴我找到了这个。我一直坚持 Apple 文档所说的内容,发现我无法通过详细的值达到我想要的效果!现在可以享用了。
  • 多麻烦吧?!?谢谢,@VariableSquid
猜你喜欢
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多