我的精灵节点在屏幕上更改位置。我需要检测精灵何时向上移动,向下移动,向左移动,向右移动。
答案 0 :(得分:0)
你有两个选择。由于你没有发布任何代码我不能真正建议哪个是最好的:
如果您已经对SKNode进行了细分,则覆盖frame属性以添加didSet观察者子句:
覆盖var frame:CGRect {
didSet {
// compute the change in the frame’s origin
let delta : CGPoint = CGPoint(x: frame.origin.x - oldValue.origin.x,
y: frame.origin.y - oldValue.origin.y)
// etc
}
}
请参阅https://developer.apple.com/documentation/spritekit/sknode
上的SKNode文档我可能会选择选项1.
希望有所帮助。
答案 1 :(得分:0)
定义变量 oldPosition 并跟踪更新:方法中的精灵位置:
var oldPosition: CGPoint?
override func update(_ currentTime: TimeInterval) {
// Called before each frame is rendered
if Int((oldPosition?.x)!) > Int((sprite?.position.x)!) {
// sprite moves to the left
} else if Int((oldPosition?.x)!) < Int((sprite?.position.x)!) {
// sprite moves to the right
}
if Int((oldPosition?.y)!) > Int((sprite?.position.y)!) {
// sprite moves down
} else if Int((oldPosition?.y)!) < Int((sprite?.position.y)!) {
// sprite moves up
}
// keep track
oldPosition = sprite?.position
}
我希望它有所帮助。