只有左右屏幕边缘的Sprite Kit碰撞检测

时间:2014-04-09 13:53:15

标签: ios collision-detection sprite-kit skphysicsbody

所以我希望我的英雄与屏幕的边缘碰撞,但是右边和左边的墙壁不是底部或顶部。

到目前为止,我已经在我的-(id)initWithSize:(CGSize)size中设置了这个:

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
    self.physicsBody.categoryBitMask = SceneEdgeCategory;

我的英雄在他的方法中有这个:

hero.physicsBody.collisionBitMask = SceneEdgeCategory;

到目前为止,一切都很有效,但由于整个屏幕都是一个物理体,我的英雄与所有边缘相撞。任何想法如何让他与墙壁碰撞?

感谢帮助人员

2 个答案:

答案 0 :(得分:1)

你正在做的是添加一个物理"框"在整个屏幕周围。您正在寻找的是屏幕左侧和右侧的两面墙。这应该可以解决问题:

//make sure that you define the topLeftPoint, bottomLeftPoint, topRightPoint and bottomLeftPoint variables 

self.leftPhysicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:topLeftPoint toPoint:bottomLeftPoint];
self.leftPhysicsBody.categoryBitMask = SceneEdgeCategory;

self.rightPhysicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:topRightPoint toPoint:bottomRightPoint];
self.rightPhysicsBody.categoryBitMask = SceneEdgeCategory;

答案 1 :(得分:0)

CGPoint topRightPoint = CGPointMake(self.frame.size.width, self.frame.size.height);

那是我的样子,但我检查过它们运作良好。我添加了:@property (nonatomic) SKPhysicsBody* leftPhysicsBody; @property (nonatomic) SKPhysicsBody* rightPhysicsBody;然后在我的initWithSize方法中有你的部分。我可能以某种方式在我的场景中添加两个物理实体吗?就像我试图初始化并分配它们但它没有帮助。