私は、画面のもう一方の側から取得するボール(プレーヤー)があるゲームを作っています。どちらの側でも、私は1点を得るためにボールが触れる必要があるSKSpriteNodeを持っています。ボールが側面のSKSpriteNodeに接触すると、ボールは反対側に到達し、別の点をスコアリングするために他のSKSpriteNodeに触れる必要があります。等々。ゲームが始まると、上端のスプライトノードがアクティブになり、下端のスプライトノードがアクティブになるように、どうすればよいでしょうか?私は毎回ボールが「ポイント」に触れるのスコアに1を加え、「incrementScore」機能を作ったSpriteKitを使用したポイントシステム
:その後、私はボールがにタッチする必要があると私の二つの「ゴール」を持っている
func incrementScore() {
score += 1
scoreLabel.text = String(score)
}
スコア:
func createGoals() {
let goalTop = SKSpriteNode(imageNamed: "Goal")
goalTop.name = "Goal"
goalTop.anchorPoint = CGPoint(x: 0.5, y: 0.5)
goalTop.position = CGPoint(x: 0, y: 465)
goalTop.physicsBody = SKPhysicsBody(rectangleOf: goalTop.size)
goalTop.physicsBody?.affectedByGravity = false
goalTop.physicsBody?.isDynamic = false
goalTop.zPosition = 2
self.addChild(goalTop)
let goalBottom = SKSpriteNode(imageNamed: "Goal")
goalBottom.name = "Goal"
goalBottom.anchorPoint = CGPoint(x: 0.5, y: 0.5)
goalBottom.position = CGPoint(x: 0, y: -435)
goalBottom.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width:
goalBottom.size.width - 10, height: goalBottom.size.height - 10))
goalBottom.physicsBody?.affectedByGravity = false
goalBottom.physicsBody?.isDynamic = false
goalBottom.zPosition = 2
self.addChild(goalBottom)
}
はまた、私はdidBeginコンタクト機能に開始しました:
func didBegin(_ contact: SKPhysicsContact) {
var firstBody = SKPhysicsBody()
var secondBody = SKPhysicsBody()
if contact.bodyA.node?.name == "Player" {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.node?.name == "Player" && secondBody.node?.name ==
"Point" {
incrementScore()
}
}
あなたは何を意味するのかよく分かりません。私は、両方の目標にcategoryBitMaskを追加しました。最初からそれをやっていない理由がわからないので、助けが必要なものを理解しやすくなりました。しかし、一方の目標がアクティブでないときにアクティブな目標を持つことになると、私は本当に理解しません。私は既に "struct ColliderType {}"にGoalを追加しています。 "player"がどちらかの "goal"に衝突するとスコアを追加します。それで、その部分は必要なように働いています。 – Flinigan
カテゴリを割り当てることができるのは、オブジェクトをヒットできるようにする場合のみです。categoryBitMaskが0の場合、衝突は発生しません。 – Knight0fDragon
はい、プレイヤーはいつでも両方の目標に常に衝突できるようにします。同時に両方にポイントを追加しないでください。 – Flinigan