У меня есть класс GameScene
и Shapes
Класс. Shapes
класс состоит из трех разных форм. В моем классе GameScene
загружаются разные спрайты, и когда приложение появляется, случайная форма появляется на экране от Shapes
и входит в контакт с одним из спрайтов. Я сделал несколько различных методов для обнаружения контакта, но я думаю, что я что-то упустил.Как определить контакт между спрайтами, объявленными в двух разных классах?
Вот Shapes
Класс:
class Shapes: SKNode{
var cY = SKSpriteNode(imageNamed: "Shape1")
var sY = SKSpriteNode(imageNamed: "Shape2")
var pY = SKSpriteNode(imageNamed: "Shape3")
convenience init(pOffset: CGFloat) {
self.init()
positionOffset = pOffset
self.addChild(cY)
self.addChild(sY)
self.addChild(pY)
}
func updateDelta(delta: NSTimeInterval) {
.....
}
GameScene
Класс:
var can1 : Shapes!
let shapesCategory: UInt32 = 1 << 0
let seaCategory: UInt32 = 1 << 1
class GameScene: SKScene, SKPhysicsContactDelegate {
var sea = SKSpriteNode(imageNamed: "sea")
sea.position = pos1
physicsWorld.contactDelegate = self
sea.physicsBody = SKPhysicsBody(circleOfRadius: square.size.height/2)
sea.physicsBody!.affectedByGravity = false
sea.physicsBody!.dynamic = false
sea.physicsBody!.categoryBitMask = seaCategory
sea.physicsBody!.collisionBitMask = shapesCategory
sea.physicsBody!.contactTestBitMask = shapesCategory
addChild(sea)
// for now I'm just dealing with if shape 1 was to spawn
can1 = Shapes(pOffset: size.width/4) // a shape spawns on this point
can1.cY.physicsBody = SKPhysicsBody(circleOfRadius: self.size.height/28)
can1.cY.physicsBody!.dynamic = false
can1.cY.physicsBody?.categoryBitMask = shapesCategory
can1.cY.physicsBody?.collisionBitMask = seaCategory
can1.cY.physicsBody?.contactTestBitMask = seaCategory
addChild(can1)
}
func didBeginContact(contact: SKPhysicsContact) {
if (contact.bodyA.categoryBitMask) == seaCategory || (contact.bodyB.
categoryBitMask) == shapesCategory {
print("contact")
}
}
ли это быть правильно подойти к нему? Поскольку каждый раз, когда я ссылаюсь на определенную фигуру из класса Shapes
, например, говоря, что can1.shape1
делает кадры в секунду резко уменьшающимися и делает ее лагги.
Edit: исправлены некоторые ошибки в строке кода
ваш код не так с самого начала идти, ваши формы не имеют физических тел, поэтому присвоение категории не делает ничего для них, вы не должны иметь контакт произойдет – Knight0fDragon
Оформить заказ https://github.com/carlbutron/Swift В разделе AnimationWithCollision вы найдете то, что ищете. – mn1
@ Knight0fDragon Да, вот что я думаю, но я пока не могу найти способ назначить им физическое тело в классе фигур. – Sharukh