Ios 在SpriteKit'中不弹性反弹的圆;s物理引擎

Ios 在SpriteKit'中不弹性反弹的圆;s物理引擎,ios,swift,physics,Ios,Swift,Physics,我一直在玩弄Swift和SpriteKit的物理引擎,想做一个简单的台球游戏。我做了一个简单的球/桌子设置,但是当球相互碰撞或与墙壁碰撞时,它们会失去大部分速度,即使它们的摩擦力和线性阻尼设置为0,恢复设置为1。显然,台球有一些摩擦,没有最大恢复力,但为了我的比赛,我希望有完全弹性的碰撞。我已经修补了所有的物理性质,但找不到产生弹性碰撞的组合。我还检查了墙壁的物理属性是否对此事有发言权,不,他们没有。改变墙壁的摩擦或恢复并没有改变结果。谢谢你的帮助 import SpriteKit class

我一直在玩弄Swift和SpriteKit的物理引擎,想做一个简单的台球游戏。我做了一个简单的球/桌子设置,但是当球相互碰撞或与墙壁碰撞时,它们会失去大部分速度,即使它们的摩擦力和线性阻尼设置为0,恢复设置为1。显然,台球有一些摩擦,没有最大恢复力,但为了我的比赛,我希望有完全弹性的碰撞。我已经修补了所有的物理性质,但找不到产生弹性碰撞的组合。我还检查了墙壁的物理属性是否对此事有发言权,不,他们没有。改变墙壁的摩擦或恢复并没有改变结果。谢谢你的帮助

import SpriteKit

class GameScene: SKScene {
override func didMoveToView(view: SKView) {
    for i in 0...5
    {
        addChild(newBall())
    }

    self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
}

func newBall() -> SKShapeNode
{
    let radius = CGFloat(Int(arc4random_uniform(10)+10))
    var ball = SKShapeNode(circleOfRadius: radius)
    ball.lineWidth = 1
    ball.strokeColor = SKColor.whiteColor()
    ball.fillColor = UIColor.cyanColor()
    ball.position = CGPointMake(CGFloat(Int(arc4random_uniform(400)+50)), CGFloat(Int(arc4random_uniform(220)+50)))

    var body = SKPhysicsBody(circleOfRadius: radius)
    ball.physicsBody = body
    body.friction = 0
    body.restitution = 1
    body.linearDamping = 0
    body.allowsRotation = true
    body.velocity = CGVectorMake(CGFloat(Int(arc4random_uniform(50)+50)), CGFloat(Int(arc4random_uniform(50)+50)))

    return ball
}
}

你能想象旋转吗?线动量可以也将与角动量交换。或者将allowsRotation设置为false。