2017-12-09 15 views
0

こんにちは私は、経路に沿って前後に移動するノードを持っています。私は動いているノードをたどるためにhello worldの例のようにmoving shapeNodeを統合しようとしています。私は、シェイプノードのコピーをトリガするフレーム更新からのトリガを使用しています。移動ノードの位置を使用します。こんにちは世界のようなパスに沿ったノードの軌跡

トレイルにはある種のオフセットがあり、どこから来たのか分かりません。私は補償しようとしましたが、無駄です。私はそれが何か行動と関係するかもしれないのだろうかと思っています。読んでくれてありがとう。

私はthis link見て試してみましたが、私はここに私のコード今のところ
SpriteKitベースのXcodeの9 SWIFTがある

enter image description here

を翻訳することはできません4 iPadのエア

// GameScene.swift 


import SpriteKit 

    class GameScene: SKScene, SKPhysicsContactDelegate { 
    var borderBody = SKPhysicsBody() 
    var myMovingNode = SKSpriteNode() 
    var trailNode : SKShapeNode? 

override func didMove(to view: SKView) { 
    //Define Border 
    borderBody = SKPhysicsBody(edgeLoopFrom: self.frame) 
    borderBody.friction = 0 
    self.physicsBody = borderBody 
    physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0) 
    physicsWorld.contactDelegate = self 

    //Define myMovingNode 
    myMovingNode = SKSpriteNode(imageNamed: "greenball") 
    myMovingNode.size.width = 50 
    myMovingNode.size.height = 50 
    let myMovingNodeBody:CGSize = CGSize(width: 50, height: 50) 
    myMovingNode.physicsBody = SKPhysicsBody.init(rectangleOf: myMovingNodeBody) 
    myMovingNode.zPosition = 2 
    addChild(myMovingNode) 

    //Make Path for myMovingNode to travel 
    let myPath = CGMutablePath() 
    myPath.move(to: CGPoint(x: 30, y: 30)) 

    myPath.addLine(to: CGPoint(x: 500, y: 500)) 

    /*This is another path to try*/ 
    // myPath.addCurve(to: CGPoint(x: 800, y: 700), control1: CGPoint(x: 500, y: 30), control2: CGPoint(x: 50, y: 500)) 

    /*This draws a line along myPath*/ 
    let myLine = SKShapeNode(path: myPath) 
    myLine.lineWidth = 10 
    myLine.strokeColor = .green 
    myLine.glowWidth = 0.5 
    myLine.zPosition = 2 
    addChild(myLine) 

    /*This sets myMovingNode running along myPath*/ 
    let actionForward = SKAction.follow(myPath, asOffset: false, orientToPath: true, duration: 10) 
    let actionReverse = actionForward.reversed() 
    let wait = SKAction.wait(forDuration: 1) 
    let actionSequence = SKAction.sequence([actionForward, wait, actionReverse, wait]) 
    myMovingNode.run(SKAction.repeatForever(actionSequence)) 

    /*This defines TrailNode and its actions*/ 
    trailNode = SKShapeNode.init(rectOf: CGSize.init(width: 20, height: 20), cornerRadius: 10) 
    if let trailNode = trailNode { 
    trailNode.lineWidth = 1 
    trailNode.fillColor = .cyan 
    trailNode.run(SKAction.sequence([SKAction.wait(forDuration: 5), 
        SKAction.fadeOut(withDuration: 3), 
        SKAction.removeFromParent()])) 
    }//Eo if Let 

}//eo overdrive 


func timeFunction(){/*This is controlled by func update*/ 
    let n = trailNode?.copy() as! SKShapeNode? 

    /*this is where i'm trying to compensate*/ 
    let movingNodeX = myMovingNode.position.x 
    let movingNodeY = myMovingNode.position.y 
    let movingNodeOffSet = CGPoint(x: movingNodeX - 0, y: movingNodeY - 0) 

    n?.position = movingNodeOffSet 
    myMovingNode.addChild(n!) 
} 


var frameCounter = 0 
override func update(_ currentTime: TimeInterval) { 
    // print("Called before each frame is rendered") 
    if frameCounter == 10{frameCounter = 0; timeFunction()} 
    frameCounter = frameCounter + 1 
} 

}//class GameScene 

答えて

0

こんにちは私自身の質問に。それは最も簡単でした。最後の行では、 からmyChildNode.addChild(n!)をaddChild(n!)に変更します。

関連する問題