Ich arbeite an einem Spiel, bei dem Objekte (Fische) über den Bildschirm bewegt werden, die Sie mit einem anderen Objekt (Haken) fangen müssen hoch und runter bewegen. Sobald die Objekte Kontakt haben, soll die Position des Fisches die gleiche sein wie die des Hakens. Also habe ich Kontakt aufgenommen (was funktioniert, ich bin mir sicher), sagte ich, wenn der Haken und die Fischberührung dazu führen, dass die Fische die gleiche Position einnehmen wie die Haken.Ändern der Position eines Knotens, sobald der Ort bereits festgelegt ist (SpriteKit)
func didBeginContact(contact: SKPhysicsContact) {
let firstBody = contact.bodyA
let secondBody = contact.bodyB
if firstBody.categoryBitMask == physicsCategory.fishHook && secondBody.categoryBitMask == physicsCategory.greenFish || firstBody.categoryBitMask == physicsCategory.greenFish && secondBody.categoryBitMask == physicsCategory.fishHook{
CollisionWithfishHook(firstBody.node as! SKSprit
eNode, greenFish: secondBody.node as! SKSpriteNode)
}
}
func CollisionWithfishHook (fishHook: SKSpriteNode, greenFish: SKSpriteNode){
greenFish.position = CGPointMake(fishHook.position.x, fishHook.position.y)
}
Aus irgendeinem Grund, wenn ich es laufe und sie den Kontakt machen passiert nichts. Ich weiß, dass der begonnene Kontakt richtig funktioniert hat, weil, als ich es sagte, um den Fisch zu entfernen, wenn es den Haken berührt, es funktioniert. Das Problem ist, dass ich den Standort des grünen Fisches nicht ändern kann. Warum ist das und was kann ich tun, um es zu beheben?
Sie scheinen davon auszugehen, dass der Greenfish immer der SecondBody ist. Dies ist möglicherweise nicht immer der Fall. –