向左或向右移动时如何水平翻转精灵?

How can I flip horizontally a sprite when moving left or right?

在我的 SpriteKit 项目中,我有一条船,我可以左右拖动它来接住从天上掉下来的物品,我希望船朝它移动的方向看,我想我必须从 CGFloat 更改 xScale( 1) 到 CGFloat(-1) 但我不知道怎么做,欢迎任何建议,这就是我处理船运动的方式:

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
        let touch = touches.first
        if let location = touch?.location(in: self){
            node.run(SKAction.move(to: CGPoint(x:  nodePosition.x + location.x - startTouch.x, y: nodePosition.y + location.y - startTouch.y), duration: 0.1))
        }
    }

touchesMoved 中,您可以使用 touch.locationtouch.previousLocation 来确定 x 位置的变化。那么如果 delta x 是正数或负数,您可以相应地翻转 xScale。

//grab current and previous locations
let touchLoc = touch.location(in: self)
let prevTouchLoc = touch.previousLocation(in: self)

//get deltas and update node position
let deltaX = touchLoc.x - prevTouchLoc.x
let deltaY = touchLoc.y - prevTouchLoc.y
node.position.x += deltaX
node.position.y += deltaY

//set x flip based on delta
node.xScale = deltaX < 0 ? 1 : -1