ios - 我可以在没有 SKAction 的情况下在屏幕上移动节点吗?

标签 ios objective-c sprite-kit

我正在使用 SpriteKit 和 objective-c 开发 Android 游戏的 iPhone 版本。 Android 版本是使用 libGDX 开发的。每当调用预定义的渲染方法时,通过更新坐标值来完成屏幕上的移动。在阅读 SpriteKit 中的文档时,我发现这里的节点是通过使用 SKAction 在屏幕上移动的,其中给出了结束坐标和持续时间,并将 Action 应用于节点。这是移动节点的唯一方法吗?或者即使在将节点添加到父节点之后(无需在任何地方调用 SKAction),我也可以更新坐标(根据时间间隔在更新方法中)吗?

最佳答案

有几种方法可以使节点移动。

  1. 更改节点的坐标 myNode.position = CGPointMake(myNode.position.x+1, myNode.position.y); 会将节点向右移动。无论他们是否有物理 body ,这种方法都适用。

  2. 将速度应用于节点的物理体 myNode.physicsBody.velocity = CGVectorMake(100, myNode.physicsBody.velocity.dy); 将节点向右移动。您的节点需要一个物理体才能工作。

  3. 应用脉冲 [myNode.physicsBody applyImpulse:CGVectorMake(100, myNode.physicsBody.velocity.dy)]; 将节点向右移动。您的节点需要一个物理体才能工作。

  4. 施加力 [myNode.physicsBody applyForce:CGVectorMake(100, myNode.physicsBody.velocity.dy)]; 将节点向右移动。您的节点需要一个物理体才能工作。

当你施加力时,就像一直在插入的马达。如果你施加冲动,就像踢一次球一样。

在 SKPhysicsBody reference 中更详细地阅读每种方法.

关于ios - 我可以在没有 SKAction 的情况下在屏幕上移动节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204024/

相关文章:

IOS:删除 imageView

android - 在 iOS、Android 和 WP 上开发的费用是多少?

ios - 在 AES 中使用 base32 key 加密

iphone - 替换 NSString 中某个索引处的字符

swift - 如何一次生成多个相同的 SpriteNode?

ios - 如何从嵌入工作区的 Swift Playground 加载 .sks 文件?

ios - GCD 和线程

ios - 在变量 iOS 中存储完成处理程序( objective-c )

ios - 返回更高级别的 UITableView 时的 ViewDidLoad

ios - 如何与其父 SKShapeNode 一起旋转 SKLabelNode?