Wil*_*ill 6 collision-detection game-physics swift
我有两个节点,我想检测它们之间的碰撞,但出于某种原因
func didBegin(_ contact: SKPhysicsContact) {
没有被调用。
它是一个球和一个桨:
ball.physicsBody?.categoryBitMask = 2
ball.physicsBody?.contactTestBitMask = 2
ball.physicsBody?.isDynamic = true
main.physicsBody?.categoryBitMask = 1
main.physicsBody?.contactTestBitMask = 1
main.physicsBody?.isDynamic = false
Run Code Online (Sandbox Code Playgroud)
_
func didBegin(_ contact: SKPhysicsContact) {
print("Collision") //Obviously this will be better in future, but I need to detect collision for a start
}
Run Code Online (Sandbox Code Playgroud)
当球四处移动时,它确实会从球拍上反弹,但我需要能够检测到这一点。
谢谢
小智 4
检查这些事情:
确保将物理世界接触委托设置为其自身类 GameScene: SKScene, SKPhysicsContactDelegate{
override func didMove(to view: SKView) {
physicsWorld.contactDelegate = self
self.backgroundColor = .white
}
Run Code Online (Sandbox Code Playgroud)
如果您指定了物理体,例如:
box.physicsBody = SKPhysicsBody(rectangleOf: CGSize)
Run Code Online (Sandbox Code Playgroud)
确保它绝对未包装(!不是?)
box.physicsBody!.affectedByGravity = true
Run Code Online (Sandbox Code Playgroud)
使物理体动态化:
box.physicsBody!.isDynamic = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |