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