我正在制作一款 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/