【发布时间】:2016-08-29 17:01:49
【问题描述】:
我正在制作一个 iOS 应用程序,但遇到了一些物理问题。从下面的 .GIF 可以看出,当我旋转六边形并且球以一定角度撞击矩形时,它会失去一些速度并且不会反弹得那么高。这是因为分享here的原因(主要是因为我限制了小球的水平位置,它只是在击球时使用垂直速度,从而失去速度)。
我终其一生都无法找到解决此问题的解决方案。有人有什么想法吗??
Ball 节点代码:
func createBallNode(ballColor: String) -> SKSpriteNode {
let ball = SKSpriteNode(imageNamed: ballColor)
ball.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame)+30)
ball.zPosition = 1
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width/2)
ball.physicsBody?.affectedByGravity = true
ball.physicsBody?.restitution = 1
ball.physicsBody?.linearDamping = 0
ball.physicsBody?.friction = 0
ball.physicsBody?.categoryBitMask = ColliderType.Ball.rawValue
ball.physicsBody?.contactTestBitMask = ColliderType.Rect.rawValue
ball.physicsBody?.collisionBitMask = ColliderType.Rect.rawValue
let centerX = ball.position.x
let range = SKRange(lowerLimit: centerX, upperLimit: centerX)
let constraint = SKConstraint.positionX(range)
ball.constraints = [constraint]
return ball
}
【问题讨论】:
-
您是否尝试过您发布的链接中的解决方案?似乎对我有意义?为什么它没有帮助您解决问题?
-
@hamobi 它没有解决我的问题。当从矩形的一个角度反弹时,球仍然会失去高度。
-
你确定你需要使用碰撞来完成你想要完成的事情吗?看起来你只是想移动球下的六边形并匹配颜色..为什么不做一个永不改变的重复弹跳动作
-
@hamobi 那绝对是理想的!不知道我将如何实现它以使其看起来更逼真。当我之前尝试过时,动作非常用力和波涛汹涌。看起来一点也不自然。
标签: ios iphone swift xcode sprite-kit