Ich habe ein Problem in meinem Code.Kollision zwischen Sprites erkennen
Ich erstelle ein Spiel und ich brauche ein Sprite, das mehrere Male gleichzeitig erscheinen kann. Dazu habe ich eine Klasse erstellt, damit ich addChild (Hindernis) mehrmals machen kann und es einen SKSpriteNode spawnt genau ähnlich zu einem anderen.
Mein Problem ist, dass ich die Kollision zwischen meinem Spieler und dem Hindernis überprüfen möchte, aber weil es vom selben SKSpriteNode ist, kann der Computer nicht wissen, über welches Hindernis ich spreche.
Hier ist, wie ich die Spieler erstellt und das Hindernis:
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)
}
}
}
Wie zu erkennen, wenn der Spieler mit einem Hindernis kollidieren?
Sie haben keine Angabe * any * 'physicsBody' noch, müssen Sie auf ändern, sollten Sie grundsätzlich Lesen Sie, wie die Physik-Simulation in SpriteKit funktioniert. – luk2302
Ich habe versucht, einen PhysikBody einzurichten, aber es hat nicht funktioniert. der Spieler passiert nur das Hindernis und nichts passiert – BenTrd
Lesen Sie ein Tutorial, es ist nicht so einfach wie nur Einstellung * einige * Physik Körper. – luk2302