首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKShapeNode帧偏移

SKShapeNode帧偏移
EN

Stack Overflow用户
提问于 2015-11-19 16:20:02
回答 1查看 651关注 0票数 1

我试图将一个physicsBody添加到一个矩形的SKShapeNode中。我使用fromEdgesWithLoop构建了我的fromEdgesWithLoop,使用Node的框架作为CGRect来构建它。

使用debug选项来显示PhysicsBody,我发现它实际上不是以我的Sprite为中心的。

我在网上搜索,发现我应该使用这个:

代码语言:javascript
复制
scene.scaleMode = .ResizeFill

遗憾的是,我尝试了所有的scaleMode,没有区别。

我还验证了我的GameScene的大小,它符合iPad2屏幕(我的目标),1024x720。

SKShapeNode是场景中的一个孩子。

在添加带有Scene框架的PhysicsBody之前,我试图设置节点在其中间的位置,但这并没有改变任何情况。节点已经位于场景的中心。

代码语言:javascript
复制
myShape.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-21 22:28:11

边缘循环的位置相对于它所连接的节点。一般来说,对于edgeLoopFromRect,这个职位是由

代码语言:javascript
复制
edge_loop_position = node.position + rect.frame.origin

在这种情况下,物理体被myShape的位置所抵消。解决此问题的一种方法是将边缘循环附加到场景,而不是形状节点:

代码语言:javascript
复制
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: myShape.frame )

或者,可以从帧的位置减去节点的位置。

代码语言:javascript
复制
let rect = CGRect(origin:CGPoint(x:myShape.frame.origin.x-myShape.position.x, y:myShape.frame.origin.y-myShape.position.y), size:myShape.frame.size)
myShape.physicsBody = SKPhysicsBody(edgeLoopFromRect:rect)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33809163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档