【问题标题】:How to set bounds to Scene physics body to bounce properly?如何设置场景物理主体的边界以正确反弹?
【发布时间】:2015-12-02 17:15:38
【问题描述】:

我实现了一个简单的物理来反弹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)];  

【问题讨论】:

  • 你改变了球的锚点吗?
  • 不,我没有改变锚点。我什至没有碰它。默认锚点是什么?

标签: ios objective-c skspritenode skphysicsbody skscene


【解决方案1】:

这是因为场景的大小和视图的大小不一样。

在 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等)。

【讨论】:

  • 当我用 aspectfill 添加scene.size=skView.bounds.size 时,球会超出屏幕并反弹回来!!!!我确实删除了添加的+100。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多