所以我希望我的英雄与屏幕的边缘碰撞,但是右边和左边的墙壁不是底部或顶部。
到目前为止,我已经在我的-(id)initWithSize:(CGSize)size
中设置了这个:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody.categoryBitMask = SceneEdgeCategory;
我的英雄在他的方法中有这个:
hero.physicsBody.collisionBitMask = SceneEdgeCategory;
到目前为止,一切都很有效,但由于整个屏幕都是一个物理体,我的英雄与所有边缘相撞。任何想法如何让他与墙壁碰撞?
感谢帮助人员
答案 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方法中有你的部分。我可能以某种方式在我的场景中添加两个物理实体吗?就像我试图初始化并分配它们但它没有帮助。