【问题标题】:Physics on the edge of a UIBezierPath ArcUIBezierPath 弧边缘的物理
【发布时间】:2018-06-07 21:30:41
【问题描述】:

我正在努力为弧线创建物理。绘制这条弧线我只需要将物理应用于所示的白线。使用此代码绘制。

let position = CGPoint(x: 0, y: 0)
let width = CGFloat(5)
let inner = 300/2-width
let outer = 300/2+width
let start = 3*CGFloat.pi/2-offset
let end = 3*CGFloat.pi/2+offset

let arc = UIBezierPath(arcCenter: position, radius: inner, startAngle: start, endAngle: end, clockwise: true)

let shape = SKShapeNode(path: arc.cgPath)
shape.strokeColor = SKColor.white
shape.lineWidth = 2
shape.fillColor = SKColor.blue
shape.physicsBody = SKPhysicsBody(polygonFrom: arc.cgPath)
shape.physicsBody?.isDynamic = false

self.addChild(shape)

自然物理应用于整个形状。添加这段代码让我得到了一些更漂亮的东西

arc.addLine(to: CGPoint(x: outer * cos(end), y: outer * sin(end)))
arc.addArc(withCenter: position, radius: outer, startAngle: end, endAngle: start, clockwise: false)

但与第一个物理原理相同的物理原理仍然适用。

如何为第二个弧创建具有适当物理特性的弧?

编辑:

显示物理并使用清晰的颜色,包括浮球。

【问题讨论】:

  • 你打开showPhysics看看你的身体是否正确?
  • 是的,身体甚至表明它在它所说的位置。好像影子还在
  • 我什至尝试使用addLine 创建一个超过 10 个点的弧,但我仍然遇到同样的问题

标签: swift sprite-kit skphysicsbody


【解决方案1】:

找出我的问题。这是物理生成器本身的问题。它只会创建凸多边形而不是凹多边形。所以我利用了Is there a way to create a concave physicsBody in SpriteKit? 中看到的内容。

在我的代码中添加一个循环来创建圆弧的矩形让我可以使用一些东西

let points = 8 //number of rectangles/2
var q = CGFloat(start)
var bodies = [SKPhysicsBody]()
for i in 1...(points*2)
{
    let parc = UIBezierPath()
    parc.move(to: CGPoint(x: inner * cos(q), y: inner * sin(q)))
    parc.addLine(to: CGPoint(x: outer * cos(q), y: outer * sin(q)))
    q += (offset/CGFloat(points))
    parc.addLine(to: CGPoint(x: outer * cos(q), y: outer * sin(q)))
    parc.addLine(to: CGPoint(x: inner * cos(q), y: inner * sin(q)))
    parc.close()
    bodies.append(SKPhysicsBody(polygonFrom: parc.cgPath))
}

//adjusting code to allow a physics body from multiple physics body instead of one
//shape.physicsBody = SKPhysicsBody(polygonFrom: arc.cgPath)
shape.physicsBody = SKPhysicsBody(bodies: bodies)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多