In meinem Swift Game habe ich drei Funktionen, die die Raketen schießen steuert. Zwei davon haben Parameter. Aber ich habe Probleme, den einen mit Parametern in der didMove richtig zu nennen. Wenn ich zum Beispiel die "func direction()" hinzufüge, verlangt swift, dass ich CGPoint für "to target" und "from" hinzufüge. Was soll ich dort eingeben? Ich habe vorher noch nicht wirklich an Parametern gearbeitet. Das Spiel funktioniert einwandfrei, wenn ich es ausführe, aber da ich es nicht in didMove aufrufen kann, wenn ich beispielsweise "Retry" drücke, schießen die Raketen nicht, da es nicht in didMove aufgerufen wird.Aufruf von Funktionen mit Parameter in didMove
func fireMissile() {
let missile = SKSpriteNode(color: .yellow, size: CGSize(width: 20,
height: 5))
missile.name = "Missile"
missile.position = CGPoint(x: player.position.x + 28, y:
player.position.y + 10)
missile.zPosition = 2
missile.physicsBody = SKPhysicsBody(rectangleOf: missile.size)
missile.physicsBody?.isDynamic = false
missile.physicsBody?.categoryBitMask = ColliderType.Bullet
missile.physicsBody?.collisionBitMask = ColliderType.Enemy |
ColliderType.Boat
missile.physicsBody?.contactTestBitMask = ColliderType.Enemy |
ColliderType.Boat
let missileFlightTime = travelTime(to: missileDestination, from:
player.position, atSpeed: missileSpeed)
missile.zRotation = direction(to: missileDestination, from:
missile.position)
self.addChild(missile)
let missileMove = SKAction.move(to: missileDestination,
duration:
TimeInterval(missileFlightTime))
let missileRemove = SKAction.removeFromParent()
missile.run(SKAction.sequence([missileMove, missileRemove]))
}
func travelTime(to target : CGPoint, from : CGPoint, atSpeed speed :
CGFloat) -> TimeInterval {
let distance = sqrt(pow(abs(target.x - from.x),2) +
pow(abs(target.y - from.y),2))
return TimeInterval(distance/speed)
}
func direction(to target : CGPoint, from: CGPoint) -> CGFloat {
let x = target.x - from.x
let y = target.y - from.y
var angle = atan(y/x)
if x < 0 {
angle = angle + CGFloat.pi
}
return angle
}
Das kommt mir bekannt vor ... :-) –
Haha, ich wette, es tut ..: D – Flinigan