2016-03-22 7 views
0

私の以前のアプリ(シングルビューアプリケーション)では、私のゲーム内のボタンのためにタッチダウンしてIBActions内をタッチアップしました。しかし、SpriteKitのゲームではシーンを完全に作成しなければならず、touchesBeganメソッドをコーディングするのが苦労しています。ここでスプライトキットゲームのtouchesメソッドでUIbuttons/IBactionsをコーディングする方法

は、私の基本的な運動方法/機能である:どこここ

func heroMovementLeft() { 

    hero.position = CGPointMake(hero.position.x - 0.5,hero.position.y); 

} 

が私の左矢印のノードで、私はHeroMovementLeft方法は、左矢印

func LeftArrow() { 

    let LeftArrow = SKSpriteNode(imageNamed: "Left Arrow.png") 
    LeftArrow.position = CGPointMake(30, 30) 
    self.addChild(LeftArrow) 
} 

に触れる時に呼び出されることを希望ここにあります現在、touchesBeganの方法をコード化するためには、

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     /* Called when a touch begins */ 

     for touch in touches { 
     } 
} 

if文を作成しますか?私はタッチを変えるのですか?左手の矢印に触れたときに私のヒーローが動くように、私は自分のタッチで書く必要がある方法を始めました。私はオンライン上で見てきましたが、この質問に対する答えを見つけることができません、助けてください。

+1

[SKSceneのボタンを設定する](http://stackoverflow.com/questions/19082202/setting-up-buttons-in-skscene) –

+0

いくつかの方法があります。最も単純なのは、移動するノードに名前を付けることです。touchesBeganメソッドでは、「nodeAtPoint」を使用して「正しいノードに触れているかどうか」を確認します。 – Whirlwind

答えて

1

あなたは基本的にあなたのスプライト

1を識別するための2つのオプションを持っている)あなたのシーンにそれらのグローバルプロパティのタッチでより

class YourScene: SKScene { 

    var leftArrow: SKSpriteNode! 

    override func didMoveToView(view: SKView) { 

    } 


    func leftArrow() { 

     leftArrow = SKSpriteNode(imageNamed: "Left Arrow.png") 
     leftArrow.position = CGPointMake(30, 30) 
     addChild(leftArrow) 
    } 
} 

を作るには、あなたがそう

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    /* Called when a touch begins */ 

    for touch in touches { 
     let location = touch.locationInNode(self) 
     let node = nodeAtPoint(location) 

     if node == leftArrow { 
      heroMovementLeft() 
     } 
     } 
    } 
のような場所を得ることができます始めました

オプション2は、スプライトの名前を指定することです。

func leftArrow() { 
    let leftArrow = SKSpriteNode(...) 
    leftArrow.name = "LeftArrow" 
    ... 
} 

とタッチでそれらの名前を確認するより方法に側として

.... 
    if node.name == "LeftArrow" { 
    heroMovementLeft() 
    } 

を始めたあなたは小さな文字であなたの特性やFUNCを開始し、大文字のみでクラス、構造体、およびプロトコルを開始する必要があります注意してください。

+0

助けてくれてありがとうございます@ crachoveride777エラー通知が表示されますが、シミュレータでアプリケーションを実行すると矢印がscreen.Iに表示されません。複数の異なるCGpointを試しました。これは私のオーバーライドfunc didMoveToView(ビュー:SKView)のaddChild(leftArrow)コードを実行しなかったためです。 } ??? –

+0

シーンに追加するには、常にaddChild(YourSprite)を呼び出さなければなりません。 – crashoverride777

+0

私はあなたが尋ねた質問とは関係がありません。あなたはそれをカバーするかもしれない背景スプライトのような他のイメージを持っていますか?あなたが持っている場合は、矢印に背景スプライトよりも高いzPositionを与えてみてください。 – crashoverride777

関連する問題