我实现了一个简单的物理操作来反弹sprite node
,除了节点在顶部和底部的屏幕上弹跳之外,其他所有东西都起作用,对于侧面来说都很好,但是对于顶部和底部视图则不在屏幕上。
这是视图:
如您所见,我的球正从屏幕底部移出,它正好触碰到其他三个侧面。
这是因为,我将更改为:
self.physicsBody=[SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height-100)];
如果我使用
scene
frame
,那么球会从屏幕的顶部和底部脱落,但是会反弹。 self.physicsBody=[SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
我的问题是,为什么
self.frame
不足以设置scene
的边界physicsBody
?当我这样设置边界时,唯一的条件对我有用:
self.physicsBody=[SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(self.frame.origin.x, self.frame.origin.y+100, self.frame.size.width, self.frame.size.height-200)];
最佳答案
这是因为场景的大小和视图的大小不同。
在GameViewController.m文件中添加以下行:scene.size = skView.bounds.size
它在这里:/* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill scene.size = skView.bounds.size
当然,您需要正常定位视图(删除添加的+100等)。
关于ios - 如何设置场景物理物体的边界以正确弹跳?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34048916/