以下代码识别场景的底部和顶部边缘,并且球按预期反弹。然而,场景的左边缘和右边缘总是被破坏。如果施加足够的力,球会离开屏幕然后最终返回。就好像场景的边缘超出了iphone模拟器窗口的边缘。有人可以帮忙吗?谢谢。importSpriteKitclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){self.physicsBody=SKPhysicsBody(edgeLoopFromRect:self.frame)backgroundColor=UIColor.cyanColor()varball=SKSpriteNode(
是否可以在sprite上放置物理体?我只希望Sprite节点的某个部分进行碰撞检测,而不是整个图像。这是我的物理bodyphysicsBody=SKPhysicsBody(rectangleOfSize:CGSize(width:CGFloat(54.0),height:CGFloat(100.0)))但我想将物理体放置在节点的顶部,它通常被放置在节点的中间。 最佳答案 您可以尝试创建一个与SKPhysicsBody大小相同的较小的SKSpriteNode并将较大的SKSpriteNode作为子节点添加到较小的.根据需要更改较大的位
我正在尝试制作一个iOS应用程序,其中包含两个物理体之间的一些碰撞检测。我希望其中一个物理实体成为我正在使用的图像的形状,但是当我尝试使用纹理来执行此操作时,它会极大地减慢我的应用程序并最终导致它完全卡住。这是导致它的两行代码:lettexture=SKTexture(imageNamed:"image.png")physicsBody=SKPhysicsBody(texture:texture,size:size)但是,如果我将这两行更改为类似physicsBody=SKPhysicsBody(rectangleOfSize:size)然后一切都运行得很好。有没有其他人遇到过这个问题
我真的需要知道如何锁定SKSpriteNode及其physicsBody的x轴。我需要保持SKSpriteNodedynamic和affectedByGravity。该节点位于斜坡上,因此这就是它的x轴因重力而移动的原因。但是,我不希望此SKSpriteNode的x轴因重力而移动。有没有办法锁定x轴以实现此目的?感谢您的帮助:D编辑:我试过像这样对x值应用约束:letxConstraint=SKConstraint.positionX(SKRange(constantValue:195))node.constraints?.append(xConstraint)但是这不起作用,我不确定
我正在使用Swift和SpriteKit在XCodeBeta6上开发游戏。为了检测所有节点是否都在休眠,我检查了它们的physicsBody.resting属性。在更新方法中,我打印出结果。importSpriteKitclassGameScene:SKScene,SKPhysicsContactDelegate{varhero:SKSpriteNode!overridefuncdidMoveToView(view:SKView){self.physicsWorld.gravity=CGVectorMake(0,0)self.physicsWorld.contactDelegate=s
我用矩形创建了我的SKPhysicsBody,我将它设置为节点的大小,但碰撞检测不适用于节点的良好部分。如何在物理体周围绘制红框?我尝试使用精确的碰撞检测,但没有用。我已经检查了一些调试库,但它只绘制了场景的直接后代,而且我的节点深度不多。作者显然不知道什么是递归。如果我的body是矩形,如何在物理body周围画红框? 最佳答案 这适用于iOS7.1和所有支持SpriteKit的OSX版本。在这个例子中,我使用变量mySKView来保存游戏的SKView。将SKView的“showPhysics”属性设置为true/YES。这通常是
我无法通过更改来更改SKSpriteNode的位置self.position=newPosition;如果它有一个physicsBody,它就不再起作用了。我得到的解决方法是:self.myStar.physicsBody=nil;[self.myStarchangePosition];self.myStar.physicsBody=[SKPhysicsBodybodyWithCircleOfRadius:self.myStar.size.width/2];或者[selfrunAction:[SKActionmoveTo:newPosiionduration:0.0]];但#2并不顺利
我的场景有一堆矩形,物理体的大小与矩形相同。我喜欢将我所有的对象锚定到CGPointZero,但是我注意到当我这样做时物理体仍然锚定在中间。换句话说,我的物理body的位置大约在视觉表示的左侧下方100个像素。下面是一段简单的代码:SKSpriteNode*square=[SKSpriteNodespriteNodeWithColor:[SKColorblackColor]size:CGSizeMake(width,height)];square.anchorPoint=CGPointZero;//positionbasedonbottom-leftcornersquare.posit