Sprite kit Swift SKAction对node.position.x执行意外行为

Sprite kit Swift SKAction对node.position.x执行意外行为,sprite-kit,swift3,skaction,Sprite Kit,Swift3,Skaction,我定义了几个动作,比如下面的动作,将不同的节点移动到给定的位置。我将目标X坐标定义为platform.position.X,目标Y坐标定义为platform.position.Y-900。预期的行为是节点将向下移动900,但保持在相同的x位置。相反,节点以一定角度向下移动,相互靠近,在最终从屏幕上消失之前在中心达到顶点。我不明白为什么会这样 import SpriteKit import GameplayKit class GameScene: SKScene, SKPhysicsContac

我定义了几个动作,比如下面的动作,将不同的节点移动到给定的位置。我将目标X坐标定义为platform.position.X,目标Y坐标定义为platform.position.Y-900。预期的行为是节点将向下移动900,但保持在相同的x位置。相反,节点以一定角度向下移动,相互靠近,在最终从屏幕上消失之前在中心达到顶点。我不明白为什么会这样

import SpriteKit
import GameplayKit

class GameScene: SKScene, SKPhysicsContactDelegate {

    override func didMove(to view: SKView) {

    let platform1 = SKSpriteNode(color: UIColor.yellow, size: CGSize(width: 400, height: 60))

    platform1.xScale = 0.8
    platform1.yScale = 0.8
    platform1.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: platform1.size.width, height: platform1.size.width / 6))

    platform1.position = CGPoint(x: -170, y: -270)
    platform1.physicsBody?.categoryBitMask = 1
    platform1.physicsBody?.collisionBitMask = 0
    platform1.physicsBody?.isDynamic = false
    platform1.physicsBody?.affectedByGravity = false
    platform1.physicsBody?.friction = 0

    addChild(platform1)


    let platform1GlideOff = SKAction.move(to: CGPoint(x: platform1.position.x, y: platform1.position.y - 900), duration: TimeInterval(5))

    var firstActionplatform1 = SKAction.run({
        platform1.run(platform1GlideOff)
    })

        let platform2 = SKSpriteNode(color: UIColor.green, size: CGSize(width: 400, height: 60))

        platform2.xScale = 0.8
        platform2.yScale = 0.8
        platform2.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: platform2.size.width, height: platform2.size.width / 6))

        platform2.position = CGPoint(x: 200, y: -270)
        platform2.physicsBody?.categoryBitMask = 1
        platform2.physicsBody?.collisionBitMask = 0
        platform2.physicsBody?.isDynamic = false
        platform2.physicsBody?.affectedByGravity = false
        platform2.physicsBody?.friction = 0

        addChild(platform2)


        let platform2GlideOff = SKAction.move(to: CGPoint(x: platform1.position.x, y: platform1.position.y - 900), duration: TimeInterval(5))

        var firstActionplatform2 = SKAction.run({
            platform2.run(platform2GlideOff)
        })


    var sequence = SKAction.sequence([SKAction.wait(forDuration: 1), firstActionplatform1, firstActionplatform2])

    run(sequence)
    }
}

它必须是您发布的代码之外的内容。我们需要更多的代码来解决这个问题。正如您发布的代码与预期完全一样,我将其复制并粘贴到代码中,它可以正常工作。@RonMyschuk我已使用2个节点更新了代码,以演示两种平台的位置不一样,因此您的问题就像复制和粘贴失败一样。平台2正在使用GlideoffOh上的平台1位置!我应该看到的!谢谢