如何像足球一样轻弹 SKSpriteNode

Posted

技术标签:

【中文标题】如何像足球一样轻弹 SKSpriteNode【英文标题】:How to flick a SKSpriteNode like a soccer ball 【发布时间】:2015-10-07 01:49:12 【问题描述】:

如果我在屏幕上有一个 SKSpriteNode,我将如何轻弹它以模拟足球被踢的物理效果。 how to throw SKSpriteNode? 我猜这有点像这个问题,但不应该发生在手指被轻弹之前先跟随手指的节点。它应该看起来像当你轻弹时你正在向节点滑动,然后一旦你的手指碰到节点,它就会像足球一样移动它。谁能给我一个起点来实现这一目标?

【问题讨论】:

techotopia.com/index.php/… @AdrianB 这是否显示了如何轻弹 SKSpriteNode?没看到…… 我很抱歉。听起来你从零开始,正在寻找一个开始的地方。我发现 techtopia 教程很有帮助。这里讨论了与 SKSpriteNodes 相关的手势识别器。 raywenderlich.com/44270/… 【参考方案1】:

我建议使用touchesBegan 方法和touchesMoved 方法。基本上,跟踪触摸的最后位置以及时间戳(使用NSTimeInterval),并在每个touchesMoved 上检查足球内部是否有触摸位置(使用[soccerBall containsPoint:location]。然后,计算您应该对球施加的力(比较时间戳,比较位置),然后运行:

[soccerBall.physicsBody applyImpulse:CGVectorMake(dx, dy)];

dxdy 替换为您的计算结果。您可能希望添加一个比例值以确保获得您正在寻找的结果。

【讨论】:

以上是关于如何像足球一样轻弹 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章

Paging UIScrollView - 如何一次轻弹多个页面

如何在继承 SKSpritenode 的类中拥有图像

如何检查两个 SKSpriteNode 是不是彼此靠近?

如何让 SKSpriteNode 不旋转纹理

IOS 拖动、轻弹或轻弹 UIView

如何在opengl中以特定频率闪烁(轻弹)2d对象