草庐IT

SKPhysicsBody

全部标签

xcode - 图像纹理中的物理体不起作用

我有以下代码行,您可以在下面看到:Enemy.physicsBody=SKPhysicsBody(texture:player.texture,size:player.size)当我尝试运行这段代码时,出现以下错误:Valueofoptionaltype'SKTexture?'notunwrapped;didyoumeantouse'!'or'?'谁能告诉我我做错了什么! 最佳答案 初始化方法SKPhysicsBody(texture:player.texture,size:player.size)需要SKTexture实例而不是O

swift - 为什么我的代码从未检测到与我的 SKPhysicsBody 有任何接触?

我遇到的问题是我创建的用于检测接触的代码无法正常工作。我希望它在球类接触到障碍物类时起作用。我的代码有什么问题?非常感谢,感谢您的帮助!这里是我定义类别的地方:letballCategory:UInt32=0x1这是我创建球的物理方面的地方:leftBall.physicsBody=SKPhysicsBody(rectangleOf:leftBall.size)leftBall.physicsBody?.categoryBitMask=ballCategoryleftBall.physicsBody?.contactTestBitMask=obstacleCategoryleftBal

xcode - 了解 SpriteKit 节点的概念

所以我是SpriteKit和Swift的新手,我并不真正理解节点背后的概念(或者sprite-kit中与此相关的任何内容)。我请求你向我解释节点的概念。我更习惯于为每个节点设置一个不同的变量实例(例如创建一个数组),这让我可以非常具体地引用任何单个节点。然而,在spritekit中,情况似乎并非如此,因为您只需制作一次并使用addChild调用它的多个实例。(比我一直在做的好多了...)这有点让我感到困惑,因为我主要不明白如何针对这些测试场景或其他东西或单独引用一个场景。例如,我试图使用removeFromParent()从场景中移除一个对象,但我不知道如何实现类似的东西:if(ene

ios - 仅向节点的边界添加碰撞,允许 Sprite 在节点内自由移动

我正在构建一个游戏,在这个游戏中,我在地下“挖掘”以使球掉落。是否有可能让这个球在它内部时与节点的边界发生碰撞。根据下图,我的目标是使用touchMoved绘制一条隧道,让球落入并与隧道表面碰撞。 最佳答案 我认为您应该使用隧道的两侧来定义SKShapeNodes,这样当球在隧道中时,它不在节点内。在您的示例图片中,您将有2个节点-每个黑色区域一个。然后设置你的碰撞参数,使球不能穿过形状 关于ios-仅向节点的边界添加碰撞,允许Sprite在节点内自由移动,我们在StackOverflo

swift - 根据节点的旋转对节点应用力

我使用Xcode6、SpriteKit和Swift,我有一个SKSpriteNode,它是新Xcode项目的默认Spaceship图像。这艘飞船有物理体,但不受重力影响,我想模拟太空。我希望当我点击屏幕时,一个力会施加到节点上,这样宇宙飞船就可以前进。问题是当飞船已经旋转了,我尝试施加一个力,飞船不会像我想要的那样前进,而是朝着施加力的方向前进,这是正常的。我想知道是否有任何方法可以根据zRotation向节点施加力?所以无论飞船朝哪个方向,它都会一直向前。 最佳答案 我现在无法尝试,但它应该可以工作://grabthespaces

swift - SKSpriteNode 碰撞识别速度不够快

我有一个SKSpriteNode(“称为球”),它是通过向其physicsBody施加脉冲来启动的。在我的didBeginContact方法中,我检查节点是否与障碍物发生碰撞。如果是这样,我希望SKSpriteNode立即停止移动(例如,“坚持”到它碰撞的对象)。问题是,当意识到球已经与障碍物发生碰撞并且球的速度设置为0时,球已经反弹,而不是碰到它碰撞的障碍物,现在是30像素左右离开funcdidBeginContact(contact:SKPhysicsContact){ballInMidAir=falsevarfirstBody:SKPhysicsBody=contact.body

ios - 如何使用 Swift 制作椭圆 SKPhysicsBody

我创建了一个椭圆SKShapeNode并且我希望该形状具有实体,但是我找不到椭圆的SKPhysicsBody初始值设定项。这是椭圆形的代码attackCircle=SKShapeNode(ellipseOfSize:CGSize(width:1000,height:400))如果我没有正确提出问题,请提前道歉。这是我在网上提出的第一个问题。 最佳答案 您想使用CGPath将其设置为椭圆。有一个适用于iOS7+的构造函数,它允许您调用:attackCircle=SKShapeNode(ellipseOfSize:CGSize(widt

swift - 改变受重力影响时物体下落的速度。(SpriteKit)

我有一个物体需要在游戏开始时从场景中掉落​​。当玩家点击屏幕时,对象会移回场景顶部。为了使物体下落,我将其设置为受重力影响。这工作正常,但问题是物体从屏幕上掉下来的速度太快了。我可以将物体下落的速度设置为不同的速度吗?如果是这样,我该怎么做。 最佳答案 您可以降低物理世界的重力。另一种选择是对每个对象施加相反方向的力。如果重力在y轴上为-9.8,您可以在y轴上施加+0-9.8的力来减慢物体的速度。编辑:改变质量不会影响速度。 关于swift-改变受重力影响时物体下落的速度。(Sprite

ios - 调整使用 SKPhysicsBody 创建的 SpriteKit SKPhysicsBody 的大小(circleOfRadius :)

我正在构建一个SpriteKit“链式react”游戏,其中的圆圈在“爆炸”时会变大。我正在使用SKPhysicsBody(circleOfRadius:)初始值设定项来为圆圈创建物理体。不幸的是,这些物理体似乎不会随着圆变大而调整大小,而且它们没有我可以设置的公开的.radius属性。有什么方法可以在SpriteKit中调整物理体的大小,还是我需要每帧都创建一个新的物理体?(这就是我在下面所做的,代码运行良好,但感觉在更新循环中创建新的物理体真的很低效。)PS-我知道对于圆圈,我可以使用三角函数轻松进行准确的碰撞检测以获得距离,但我想使用SpriteKit碰撞检测来实现其他一些效果。

swift - SKSpriteNode 卡在 init(edgeLoopF​​rom :) - SKPhysicsBody

我有一个名为“Floor”的单独类,如下所示。classFloor:SKNode{overrideinit(){super.init()//letedgeFrame=CGRect(origin:CGPoint(x:1,y:1),size:CGSize(width:1078,height:1950))//self.physicsBody=SKPhysicsBody(edgeLoopFrom:edgeFrame)letborderBody=SKPhysicsBody(edgeLoopFrom:self.frame)borderBody.friction=0self.physicsBody=