在此场景中:
let rectangle = SKShapeNode(rectangleOfSize: CGSize(300, 400))
rectangle.fillColor = UIColor.clearColor()
rectangle.strokeColor = UIColor.grayColor()
rectangle.strokeWidth = 10
self.addChild(rectangle)
我想在这个矩形内放置一个球,被困在里面,具有一定的速度和恢复力,当与其中一堵墙碰撞时,它将弹跳并改变矢量方向。
最佳答案
我不是 100% 确定是否可以使用 SKShapeNodes 和物理体来做到这一点,因为物理体将应用于整个形状节点(带中心)。
由于您想让矩形可见,您可以创建一个具有 4 个 SKSpriteNodes 边的 SKSpriteNode 子类,然后将它们塑造为矩形。
或者,您可以在您选择的程序中绘制一个矩形边框,只需确保中心基本上没有任何东西,然后导出为 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
关于ios - 将一个球放入一个被困在里面的矩形内,并具有一定的速度和恢复力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34239557/