überqueren kann ich die SKContactDelegate SetupKollisionserkennung in Xcode (swift) wird nicht funktionieren, ich versuche, Grenzen zu setzen, in dem der Spieler nicht
class GameScene: SKScene, SKPhysicsContactDelegate
{
override func didMoveToView(view: SKView)
{
self.physicsWorld.contactDelegate = self
Hier habe ich Setup die Enum
enum ColliderType:UInt32
{
case Player = 1
case Boundary = 2
}
Hier mache ich den Player-Knoten.
let playerTexture = SKTexture(imageNamed: "testCircle1.png")
thePlayer = SKSpriteNode(texture: playerTexture)
thePlayer.position = CGPointMake(frame.size.width - 350, frame.size.height/2)
thePlayer.zPosition = 5
thePlayer.size = CGSize(width: 100, height: 100)
thePlayer.name = "playerNode"
thePlayer.physicsBody = SKPhysicsBody(circleOfRadius: playerTexture.size().height/2)
thePlayer.physicsBody!.dynamic = false
thePlayer.physicsBody!.allowsRotation = false
thePlayer.physicsBody!.categoryBitMask = ColliderType.Player.rawValue
thePlayer.physicsBody!.contactTestBitMask = ColliderType.Boundary.rawValue
thePlayer.physicsBody!.collisionBitMask = ColliderType.Boundary.rawValue
addChild(thePlayer)
Dann Setup ich die Grenzen
ground = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(frame.size.width - 150, 10))
ground.position = CGPointMake(frame.size.width/2 - 75, 96)
ground.zPosition = 5
ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(ground.size.width, ground.size.height))
ground.physicsBody!.dynamic = false
ground.physicsBody!.allowsRotation = false
ground.physicsBody!.categoryBitMask = ColliderType.Boundary.rawValue
ground.physicsBody!.contactTestBitMask = ColliderType.Player.rawValue
ground.physicsBody!.collisionBitMask = ColliderType.Player.rawValue
addChild(ground)
sky = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(frame.size.width - 150, 10))
sky.position = CGPointMake(frame.size.width/2 - 75, frame.size.height - 96)
sky.zPosition = 5
sky.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(frame.size.width - 150, 10))
sky.physicsBody!.dynamic = false
sky.physicsBody!.allowsRotation = false
sky.physicsBody!.categoryBitMask = ColliderType.Boundary.rawValue
sky.physicsBody!.contactTestBitMask = ColliderType.Player.rawValue
sky.physicsBody!.collisionBitMask = ColliderType.Player.rawValue
addChild(sky)
Dann wird die Kollisionserkennung
func didBeginContact(contact: SKPhysicsContact)
{
print("Contact")
if contact.bodyA.categoryBitMask == ColliderType.Boundary.rawValue || contact.bodyB.categoryBitMask == ColliderType.Boundary.rawValue
{
print("Contact")
thePlayer.removeAllActions()
}
}
ich außerhalb der if-Anweisung des Druck versucht setzen, um zu sehen, ob es sogar Kollisionserfassungs wurde überhaupt aber das war es nicht.
Ich habe schon in vielen Tutorials geschaut und folgten dem, was sie taten, aber es wird einfach nicht funktionieren und ich habe nur noch ein paar Wochen, dies zu drehen in
Warum ist die Physik Körper dynamisch = false gesetzt des Spielers? Das würde bedeuten, dass es eine Grenze ist und nicht von der Physik beeinflusst wird. –
Omg Alter danke, ich fühle mich jetzt wirklich dumm, wenn man bedenkt, wie einfach eine Lösung war. Der Grund, warum ich dynamic auf false gesetzt habe, war, dass es nicht von der Schwerkraft beeinflusst wird, aber ich habe die betroffeneByGravity-Funktion völlig vergessen. Danke, Mann! –
Ich habe den Kommentar auf eine Antwort übertragen, damit Sie ihn als beantwortet markieren können ... –