2016-03-03 1 views
-1

Je travaille dans un jeu pour mon collège et je suis coincé dans une chose.tournage emplacement en mouvement rapide

lorsque je tente de tirer avec mon héros la balle remontons seulement ou côté je besoin de mon bullet aller là où jamais mon héros faites pivoter plz me aider c'est mon code

func spownBullet() { 
    let bullet = SKSpriteNode(imageNamed: "Bullet") 
    let hero = self.childNodeWithName("hero") as! SKSpriteNode 
    bullet.zPosition = 1 
    bullet.position = CGPointMake(hero.position.x, hero.position.y) 
    bullet.size = CGSize(width: 20, height: 30) 
    let bulletact = SKAction.moveToY(self.size.height + 300, duration: 1) 
    bullet.runAction(SKAction.repeatActionForever(bulletact)) 
    self.addChild(bullet) 

} 

Répondre

0

Si je comprends bien, vous voulez que votre balle pour aller à une certaine distance (par exemple 300) dans le même angle que votre sprite "héros" est tourné.

est ici une fonction pour calculer le point de destination:

// destination point moving at angle 
// --------------------------------- 
func endPointMovingSpriteFrom(origin:CGPoint, atAngle angle:CGFloat,forDistance distance:CGFloat) -> CGPoint 
{ 
    let deltaX = distance/sin(angle + CGFloat(M_PI)/2) 
    let deltaY = distance/cos(angle + CGFloat(M_PI)/2) 
    return CGPoint(x: origin.x - deltaX, y:origin.y - deltaY) 
} 

Vous pouvez l'utiliser pour calculer la destination, puis utilisez la destination dans une action moveTo:

let bulletDestination = endPointMovingSpriteFrom(hero.position, atAngle:hero.zRotation, forDistance:300) 
let bulletact = SKAction.moveTo(bulletDestination, duration: 1) 
+0

La fonction peut être globale. Les deux lignes qui l'utilisent devraient simplement remplacer celle que vous avez dans votre code d'exemple (où vous créez un bulletin). –

+0

ty mais j'ai où devrais-je mais le deuxième code (laissez bulletDestination = endPointMovingSpriteFrom (hero.position, atAngle: hero.rotation, pourDistance: 300) let bulletact = SKAction.moveTo (bulletDestination, durée: 1)) dans touchesMoved. ? –

+0

lorsque je le remplace, s me donner une erreur –