gpt4 book ai didi

ios - 使用 skphysicsBody 和半径的圆圈将球困在圆圈中

转载 作者:搜寻专家 更新时间:2023-10-31 22:08:31 25 4
gpt4 key购买 nike

skphysics and

    roundbg.physicsBody = SKPhysicsBody(circleOfRadius: round.frame.width/2)
roundbg.physicsBody?.dynamic = false

试图将球困在圆圈内 (roundbg)。问题是,当我将 circleOfRadius 用于我的圆形纹理时,它需要整个圆而不仅仅是边框。我明白为什么 circleOfRadius 这样做但无法弄清楚如何只捕获边界。有任何想法吗?所以理想情况下,当球落下时,它会被困在圆圈(roundbg)内。

第一个 iOS 应用程序/游戏,而且非常新。谢谢你的帮助!

最佳答案

SKPhysicsBody(circleOfRadius:) 创建一个基于体积的主体。在你的情况下,你需要一个 Edge based body 用于较大的圆圈。试试下面的代码。

let largeCircleRadius : CGFloat = 100
var largeCirclePath = CGPathCreateMutable();
CGPathAddArc(largeCirclePath, nil, 0.0, 0.0, largeCircleRadius, 0.0, CGFloat(2.0 * M_PI), true)

let largeCircle = SKShapeNode(circleOfRadius: 100)
largeCircle.position = CGPointMake(CGRectGetWidth(frame) / 2.0, CGRectGetHeight(frame) / 2.0)
largeCircle.physicsBody = SKPhysicsBody(edgeLoopFromPath: largeCirclePath)
addChild(largeCircle)

let smallCircle = SKShapeNode(circleOfRadius: 10)
smallCircle.position = CGPointMake(CGRectGetWidth(frame) / 2.0, CGRectGetHeight(frame) / 2.0)
smallCircle.physicsBody = SKPhysicsBody(circleOfRadius: 10)
addChild(smallCircle)

在此处阅读有关基于边缘和基于体积的主体的更多信息: https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html#//apple_ref/doc/uid/TP40013043-CH6-SW3

要创建圆的一部分,您可以相应地更改 circlePath 的 startAngle 和 endAngle。还使用 edgeChainFromPath 而不是 edgeLoopF​​romPath 来不关闭循环。

let largeCircleRadius : CGFloat = 100
var largeCirclePath = CGPathCreateMutable();
let startAngle : CGFloat = 3.14
let endAngle : CGFloat = 2 * 3.14

CGPathAddArc(largeCirclePath, nil, 0.0, 0.0, largeCircleRadius, startAngle, endAngle , false)

let largeCircle = SKShapeNode(path: largeCirclePath)
largeCircle.position = CGPointMake(CGRectGetWidth(frame) / 2.0, CGRectGetHeight(frame) / 2.0)
largeCircle.physicsBody = SKPhysicsBody(edgeChainFromPath: largeCirclePath)
addChild(largeCircle)

let smallCircle = SKShapeNode(circleOfRadius: 10)
smallCircle.position = CGPointMake(CGRectGetWidth(frame) / 2.0, CGRectGetHeight(frame) / 2.0)
smallCircle.physicsBody = SKPhysicsBody(circleOfRadius: 10)
addChild(smallCircle)

关于ios - 使用 skphysicsBody 和半径的圆圈将球困在圆圈中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28797327/

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