将一个球放在一个被困在内部的矩形内,具有一定的速度和恢复力

Put a ball inside a rectangle trapped inside, with some velocity and restitution

在这个场景中:

let rectangle = SKShapeNode(rectangleOfSize: CGSize(300, 400))
rectangle.fillColor = UIColor.clearColor()
rectangle.strokeColor = UIColor.grayColor()
rectangle.strokeWidth = 10
self.addChild(rectangle)

我想在这个矩形内放一个球,困在里面,有一定的速度和恢复力,当与其中一堵墙碰撞时,它会弹跳并改变矢量方向。

我不是 100% 确定你是否可以使用 SKShapeNodes 和物理体来做到这一点,因为物理体将应用于整个形状节点(带中心)。

既然你想让矩形可见,你可以创建一个 SKSpriteNode 子类,它有 4 个 SKSpriteNodes 边,然后将它们塑造成一个矩形。

或者您可以在您选择的程序中绘制一个矩形边框,只要确保中心基本上没有任何东西,然后导出为 PNG。不仅仅是用图像创建一个 SKSpriteNode。

  let rectangle = SKSpriteNode(imageNamed: "Rectangle")
  let texture = SKTexture(imageNamed: "Rectangle")
  rectangle.physicsBody = SKPhysicsBody(texture: texture, size: texture.size())
  rectangle.physicsBody?.collisionBitMask = 1

现在,如果您正确绘制了矩形,由于您没有绘制中心,它将只有 4 个边上有一个物理体。

比起你简单地创建你的球并给它一个像上面那样的物理体,使用相同的碰撞位掩码。将它定位在矩形的中心并给它一个脉冲或其他东西。它应该在不离开矩形的情况下随心所欲地弹跳。

如果您对物理物体不确定,那么您需要阅读一些相关内容,例如 http://www.techotopia.com/index.php/A_Swift_iOS_8_Sprite_Kit_Collision_Handling_Tutorial