4
Here是我遇到的問題的視頻。正如你在視頻中看到的那樣,我移動一個灰色的球試圖碰撞一個紅色的球。當兩個物體發生碰撞時不會發生彈跳,紅色球就會移動。我試着玩弄紅球的密度,比如使紅球密度爲0.00001。碰撞行爲沒有區別。當拖動一個對象與Sprite Kit中的另一個對象發生衝突時,不會發生彈跳
如何更改碰撞行爲以便彈跳?
這裏是灰球的特性:
func propertiesGrayBall() {
gray = SKShapeNode(circleOfRadius: frame.width/10)
gray.physicsBody = SKPhysicsBody(circleOfRadius: frame.width/10)
gray.physicsBody?.affectedByGravity = false
gray.physicsBody?.dynamic = true
gray.physicsBody?.allowsRotation = false
gray.physicsBody?.restitution = 1
}
這裏是紅球的特性:
func propertiesRedBall {
let redBall = SKShapeNode(circleOfRadius: self.size.width/20
redBall.physicsBody = SKPhysicsBody(self.size.width/20)
redBall.physicsBody?.affectedByGravity = false
redBall.physicsBody?.dynamic = true
redBall.physicsBody?.density = redBall.physicsBody!.density * 0.000001
redBall.physicsBody?.allowsRotation = false
redBall.physicsBody?.restitution = 1
}
這裏是我移動灰球。
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
if fingerIsOnGrayBall {
let touch = touches.first
var position = touch!.locationInView(self.view)
position = self.convertPointFromView(position)
grayBall.position = position
}
}
主要編輯 球原本附件。我刪除了它們來簡化問題。這就是爲什麼這些評論可能與代碼無關。
您能告訴我們灰色bal我和黑人?那裏可能有東西不允許它響應物理碰撞。 – Gliderman
@Gliderman我剛剛更新了代碼!感謝您的答覆。 – Sami
有趣的是,你說把賠償金改爲1並沒有什麼不同。您是否嘗試將恢復原狀設置爲true,然後執行blackBall.physicsBody?.usePreciseCollisionDetection = true?你很快移動球,所以也許可以解決這個問題。 – theprole