Also habe ich einen Spieler erstellt, der kachelbasiert bewegt und eine Mauer um die Map legt, um den Spieler auf dem Spielplatz zu halten. Beide haben einen Physikkörper in ihnen. Meine Vermutung ist, dass meine Bewegung des Spielers nicht richtig ist und so der Spieler in die Wände stößt. Lassen Sie mich Ihnen nur zeigen, meinen Code:SpriteKit: Sprites bewegen sich durcheinander mit einem physicsBody bereits gesetzt
Das ist also die physicsBody des Spielers:
self.physicsBody!.usesPreciseCollisionDetection = true
self.physicsBody!.categoryBitMask = PhysicsCategory.Player
self.physicsBody!.contactTestBitMask = PhysicsCategory.House
self.physicsBody!.collisionBitMask = PhysicsCategory.Wall
Und das ist die physicsBody der Mauer:
self.physicsBody!.usesPreciseCollisionDetection = true
self.physicsBody!.categoryBitMask = PhysicsCategory.Wall
self.physicsBody!.contactTestBitMask = 0
self.physicsBody!.collisionBitMask = PhysicsCategory.Player
self.physicsBody!.isDynamic = false
Sie sowohl von der Klasse erben Objekte:
self.physicsBody = SKPhysicsBody(rectangleOf: size)
self.physicsBody!.affectedByGravity = false
self.name = name
So und lassen Sie mich nur geben Sie meinen Code für die Bewegung des Spielers, wenn das ist die Ursache:
func move(direction: String, width: CGFloat){
//Choosing the direction based of the users touch
switch direction{
case "South":
//Decreasing the position of the player by 1 Tile
pos.y -= width
//Flipping the picture the right way to make the player look in the right direction
yScale = 1.0
//Rotates the picture
let rotateAction = SKAction.rotate(toAngle: -1.57, duration: 0.0)
run(rotateAction)
//All the other directions just change the x and y value of pos corresponding to the direction
}
//Moves the player to the calculated position
let moveAction = SKAction.move(to: pos, duration: 0.0)
run(moveAction){
//Sound
}
Edit:
Die Werte der PhysicsCategory.Player
und PhysicsCategory.Wall
struct PhysicsCategory{
static let Wall:UInt32 = 0x1 << 0
static let Player:UInt32 = 0x1 << 1
static let House:UInt32 = 0x1 << 2
}
Edit 2:
Das Hauptproblem Kollision mit SKAction zu bekommen, ist richtig funktioniert
geändert hätte Was sind die Werte von: PhysicsCategory.Player, PhysicsCategory.House und PhysikKategorie.Wall? – Confused
Bearbeitet. Das Haus ist das Ziel, zu dem der Spieler gehen muss. Die gleichen Fehler passieren auch dort. –
Wir brauchen einen viel größeren Verstand als meinen. Meine ist verwirrt. – Confused