gpt4 book ai didi

ios - didBeginContact 未被调用

转载 作者:行者123 更新时间:2023-11-28 05:32:51 24 4
gpt4 key购买 nike

我正在尝试创建一个程序,无论我的宇宙飞船越过一个圆圈,它都会打印出一些东西,但是当我把宇宙飞船放在圆圈上时,它没有打印任何东西。我是否构建了错误的 didBeginContact 方法?我是否设置了错误的 BitMasks?

import SpriteKit

class GameScene: SKScene {
var spaceship: SKNode!
var circ: SKNode!
override func didMoveToView(view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
spaceship = SKSpriteNode(imageNamed: "Spaceship")
spaceship.setScale(0.4)
spaceship.position.x = self.frame.width/2
spaceship.position.y = spaceship.frame.height/2
spaceship.physicsBody = SKPhysicsBody(circleOfRadius: spaceship.frame.height/2)
spaceship.physicsBody?.categoryBitMask = 1
spaceship.physicsBody?.contactTestBitMask = 2
spaceship.physicsBody?.collisionBitMask = 0
spaceship.physicsBody?.dynamic = true

circ = SKShapeNode(circleOfRadius: 50)
circ.position.y = self.frame.height/2
circ.position.x = self.frame.width/2
circ.physicsBody = SKPhysicsBody(circleOfRadius: 50)
circ.physicsBody?.categoryBitMask = 2
circ.physicsBody?.contactTestBitMask = 1
circ.physicsBody?.collisionBitMask = 0
circ.physicsBody?.dynamic = true
self.addChild(circ)
self.addChild(spaceship)
}

func didBeginContact(contact: SKPhysicsContact){
println("colliding!")
}

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
spaceship.position = location
}
}

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
spaceship.position = location
}
}
}

最佳答案

您需要声明自己是物理世界的联络代表:

// add conformance to SKPhysicsContactDelegate:
class GameScene: SKScene, SKPhysicsContactDelegate {
// ...
override func didMoveToView(view: SKView) {
self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)

// set as delegate:
self.physicsWorld.contactDelegate = self

// ..
}

// should be called now
func didBeginContact(contact: SKPhysicsContact){
println("colliding!")
}
}

关于ios - didBeginContact 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com