2017-12-01 3 views
0

私はあなたがボートをコントロールしなければならないゲームを作っており、あなたは最後のボートでなければなりません。ゲームを走らせたいのは、あなたのボートのフロントが別のボートの側面または背面に当たったときに、他のボートを「殺す」ことです。その逆もあります。これまでは、ノードのさまざまな側面に基づいてこれを行う方法は見つけられていませんでした。私はボートの側面と正面に小さな目に見えないノードを追加することでこれを実装しようとしましたが、ボートがランダムなオブジェクトと衝突している間に分割されたヒットボックスから離れてしまうという不具合が発生しました。ここに私のコードは、これまでのところです:ノードのさまざまな側面に異なる連絡先を持っています

func addApple(_ position: CGPoint) { 

    guard let appleImage = UIImage(named: "apple") else { 
     return 
    } 

    let texture = SKTexture(image: appleImage) 
    let apple = SKSpriteNode(texture: texture) 
    apple.position = position 
    apple.setScale(0.1) 
    addChild(apple) 
    appleNode = apple 
} 
addApple(CGPoint(x: -100, y: -100)) 

、私はCPUボートにボートを移動するための

locationx2 = (appleNodeCpu?.position.x)! 
    locationy2 = (appleNodeCpu?.position.y)! 
    let dx2 = locationx2 - (appleNodeCpu2?.position.x)! 
    let dy2 = locationy2 - (appleNodeCpu2?.position.y)! 
    let angle2 = atan2(dy2, dx2) 
    let vx2 = cos(angle2) * appleNodeCpu2Speed 
    let vy2 = sin(angle2) * appleNodeCpu2Speed 

、その後を追加するためにこれを持っている:追加するためのちょうど私のコードです

 moveAnalogStick.beginHandler = { [unowned self] in 


     guard self.appleNode != nil else { 
      return 
     } 

    } 



    moveAnalogStick.trackingHandler = { [unowned self] jData in 
     let rotateToAngle = SKAction.rotate(toAngle: jData.angular, duration:0.25, shortestUnitArc:true) 

     self.appleNode?.run(rotateToAngle) 

     guard let aN = self.appleNode else { 
      return 
     } 
     let when = DispatchTime.now() + 0.25 // change 2 to desired number of seconds 
     DispatchQueue.main.asyncAfter(deadline: when) { 

      aN.position = CGPoint(x: aN.position.x + (jData.velocity.x * 0.12), y: aN.position.y + (jData.velocity.y * 0.12)) 
     } 

    } 

    moveAnalogStick.stopHandler = { [unowned self] in 

     guard self.appleNode != nil else { 
      return 
     } 

    } 

しかし、私はどのようにこれらの異なる連絡先を作成しようとしているのか分かりません。申し訳ありません:(

は、任意の助けてくれてありがとう!!!!

答えて

0

あなたは各船にSKPhysicsBodyを追加することができ、その後、組み込みの提供の接触や衝突検知機構、Working With Collisions and Contactsを参照してください使用しています。

単純なレベルでは、SKNode.intersectsメソッドを使用して2つのノードが交差するときにテストすることができます。

関連する問題