Итак, я создал игрока, который перемещает плитки и стену, окружающую карту, чтобы держать игрока на игровой площадке. Оба имеют в них физическое устройство. Я предполагаю, что мое движение игрока неправильное, и поэтому игрок врезается в стены. Позвольте мне просто показать вам мой код:SpriteKit: Спрайты перемещаются друг с другом с уже установленным физикой.
Так что это physicsBody Игрока:
self.physicsBody!.usesPreciseCollisionDetection = true
self.physicsBody!.categoryBitMask = PhysicsCategory.Player
self.physicsBody!.contactTestBitMask = PhysicsCategory.House
self.physicsBody!.collisionBitMask = PhysicsCategory.Wall
И это physicsBody Стены:
self.physicsBody!.usesPreciseCollisionDetection = true
self.physicsBody!.categoryBitMask = PhysicsCategory.Wall
self.physicsBody!.contactTestBitMask = 0
self.physicsBody!.collisionBitMask = PhysicsCategory.Player
self.physicsBody!.isDynamic = false
Они оба наследуют от класса Объекты:
self.physicsBody = SKPhysicsBody(rectangleOf: size)
self.physicsBody!.affectedByGravity = false
self.name = name
Итак, позвольте мне дать вам мой код для движения игрока, если это Причина:
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:
Значения PhysicsCategory.Player
и PhysicsCategory.Wall
struct PhysicsCategory{
static let Wall:UInt32 = 0x1 << 0
static let Player:UInt32 = 0x1 << 1
static let House:UInt32 = 0x1 << 2
}
Edit 2:
Основная проблема заключается, чтобы получить столкновения с SKAction работает должным образом
Какие значения: PhysicsCategory.Player, PhysicsCategory.House и PhysicsCategory.Wall? – Confused
Отредактировано. Дом - это цель, куда должен идти игрок. То же самое происходит и с ошибками. –
Нам нужен гораздо больший ум, чем мой. Мой смущен. – Confused