単にdidSimulatePhysics()でコーディングして、サメが画面の最後に到達したとき反対方向に進むようにします。しかし、私は私はそれを使用しようとすると、スウィフトは、サメを見つけるために取得することはできません 'didSimulatePhysics()'別のクラスのオブジェクトを参照
GameElementsClass:
import SpriteKit
extension GameScene {
func createSharkAtPosition (position:CGPoint, ofType type:SharkType) -> SharkNode {
let node = SharkNode()
let position = CGPoint(x: position.x * scaleFactor, y: position.y)
node.position = position
node.name = "SHARKNODE"
node.sharkType = type
var sprite:SKSpriteNode
sprite = SKSpriteNode(imageNamed: "shark1")
node.addChild(sprite)
node.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size)
node.physicsBody?.dynamic = true
node.physicsBody?.affectedByGravity = false
node.physicsBody?.velocity.dx = CGFloat(-60)
node.physicsBody?.categoryBitMask = CollisionBitMask.Shark
node.physicsBody?.collisionBitMask = 0
return node
}
}
GameSceneClass:
func sharkMaker() {
let randomXPos = arc4random_uniform(170) + 10
let yPosition = CGRectGetMidY(self.frame) + 200 * CGFloat(counter)
counter += 1
let shark = createSharkAtPosition(CGPoint(x: CGFloat(randomXPos), y: yPosition - 180), ofType: SharkType.normalShark)
foreground.addChild(shark)
}
override func didSimulatePhysics() {
if node.position.x < -10 {
node.xScale = -1
node.physicsBody?.velocity.dx = CGFloat(50)
}else if (node.position.x > self.size.width + 10) {
node.xScale = 1
node.physicsBody?.velocity.dx = CGFloat(-50)
}
あなたのゲームからあなたのサメを作りましょう。 – Max
didSimulatePhysics()の下にコードを追加します。しかし、私はそれを働かせるように思わない 'if player.position.x <-10 { shark.xScale = shark.xScale * -shark.physicsBody?.velocity.dx = CGFloat(60) } else if (player.position.x> self.size.width + 10){ shark.xScale = shark.xScale shark.physicsBody?.velocity.dx = CGFloat(-60) } ' – rkoi95
あなたの質問を編集する必要があります](http://stackoverflow.com/posts/36320205/edit)。今は不明です。私たちはあなたがしようとしていることをあいまいに説明しています。あなたは[MCVE](http://stackoverflow.com/help/mcve)を作成していません。 [オブジェクト指向プログラミング](http://importblogkit.com/2015/04/programming-objectively/)について少し学ぶことは、長い道のりになります。 – nhgrif