ios - 向游戏中的移动物体发射弹丸

标签 ios swift sprite-kit

我正在制作一款 iOS 游戏,其中英雄位于屏幕的最左侧(横向模式),她向来自右侧的怪物射击。现在我正在学习本教程,因为我是 iOS 游戏的初学者:https://www.raywenderlich.com/71-spritekit-tutorial-for-beginners

我遇到的问题是教程中的代码来自 2013 年。这会影响 CGPoints 在场景中的位置(因为现在的中心是中间而不是左边缘)但也可能已经存在使它更容易的功能。例如,在教程中他们声明

func +(left: CGPoint, right: CGPoint) -> CGPoint {
  return CGPoint(x: left.x + right.x, y: left.y + right.y)
}

func -(left: CGPoint, right: CGPoint) -> CGPoint {
  return CGPoint(x: left.x - right.x, y: left.y - right.y)
}

func *(point: CGPoint, scalar: CGFloat) -> CGPoint {
  return CGPoint(x: point.x * scalar, y: point.y * scalar)
}

func /(point: CGPoint, scalar: CGFloat) -> CGPoint {
  return CGPoint(x: point.x / scalar, y: point.y / scalar)
}

#if !(arch(x86_64) || arch(arm64))
  func sqrt(a: CGFloat) -> CGFloat {
    return CGFloat(sqrtf(Float(a)))
  }
#endif

extension CGPoint {
  func length() -> CGFloat {
    return sqrt(x*x + y*y)
  }

  func normalized() -> CGPoint {
    return self / length()
  }
}

只能计算两点之间的偏移量并设置弹丸应该去的位置:

let offset = touchLocation - projectile.position
let direction = offset.normalized()

上面的代码是否有更新版本的代码,如果有任何其他初学者教程实现了射击弹丸功能,请在答案中链接它们。谢谢你!

最佳答案

如果您还没有,您可以通过 GitHub 存储库导入所有 SpriteKit 辅助函数,而不是自己复制它们。它们仍然有效,我最近自己也用过。

https://github.com/raywenderlich/SKTUtils/tree/master/SKTUtils

关于ios - 向游戏中的移动物体发射弹丸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619616/

相关文章:

ios - TabBar 中的 SplitView 在 ios7 中布局不正确

swift - 在 Swift 中使 CollectionViewCell 在突出显示时反弹

ios - 如何根据实例的属性更新 UILabel 的文本

ios - UITableView 中的右侧细节不可见

swift - Core Data 代码生成器如何决定是否将属性设为可选?

swift - 从父节点中删除 SKSpiteNode

swift - 如何将实例方法连接到我的对象

iphone - 在 iphone 中只显示一次弹出窗口?

ios - 无法更改翻转的 UIImage 图像 Swift 2 iOS 的 tintColor

ios - 如何将 UIImageView 转换为 CGImageRef?