私のコードに問題があります。スプライト間の衝突を検出します
私はゲームを作成していますが、同時に複数回出現するスプライトを持たなければならないので、クラスを作成してaddChild(障害物)を複数回実行し、1つのSKSpriteNode他のものとまったく同じです。
私の問題は、自分のプレーヤーと障害物の衝突をチェックしたいのですが、それは同じSkSpriteNodeのものなので、私が話している障害をコンピュータが知ることができません。ここで
は、私はプレーヤーと障害物を作成する方法は次のとおりです。
import SpriteKit
class Obstacle: SKSpriteNode {
init() {
let obstacleTexture = SKTexture(imageNamed: "obstacle")
super.init(texture: obstacleTexture, color: UIColor.clearColor(), size: CGSize(width: 80, height: 80))
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class GameScene: SKScene {
var player:SKSpriteNode!
override func didMoveToView(view: SKView) {
//player setup
let playerTexture = SKTexture(imageNamed: "player")
player = SKSpriteNode(texture: playerTexture)
player.position = CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.2)
}
//how I spawn an obstacle
func spawnObstacle() {
let obstacle = Obstacle()
//obstacle position setup
obstacle.position.x = CGFloat(arc4random()) % self.frame.size.width
obstacle.position.y = self.frame.size.height + 200
//random spin action setup
var rotateObstacle = SKAction.rotateByAngle(CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))
if random() % 2 == 0 {
rotateObstacle = SKAction.rotateByAngle(CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))
}else{
rotateObstacle = SKAction.rotateByAngle(-CGFloat(M_PI), duration: Double((drand48() + 1) * 0.75))
}
let rotateObstacleForever = SKAction.repeatActionForever(rotateObstacle)
//random move action setup
let moveObstacle = SKAction.moveTo(CGPointMake(CGFloat(arc4random()) % self.frame.size.width, -200), duration: Double((drand48() + 1) * 1.5))
//running the actions
obstacle.runAction(rotateObstacleForever)
obstacle.runAction(moveObstacle)
addChild(obstacle)
}
}
}
プレイヤーはいずれかの障害物に衝突したときに検出する方法は?
*いかなる* 'physicsBody'はまだ、あなたは設定変更する必要がある、あなたは基本的にすべきSpriteKitの物理シミュレーションの仕組みをお読みください。 – luk2302
私はphysicsBodyをセットアップしようとしましたが、動作しませんでした。プレイヤーが障害物を通過して何も起こらない – BenTrd
チュートリアルを読むと、物理的な体を設定するだけの単純さではありません。 – luk2302