草庐IT

PhysicsBody

全部标签

ios - 在更改 SKSpriteNode 位置的同时更改 SKPhysicsBody

我有一个非常简单的游戏。这就像使用加速度计的经典迷宫游戏,但用户还可以使用3DTouch更改矩形的大小。玩家的节点是矩形,由于从加速度计获取数据的世界物理学而移动(这里没有什么特别的):motionManager.startAccelerometerUpdates(to:OperationQueue.current!){(data,error)inifletmotionData=data{self.physicsWorld.gravity=CGVector(dx:motionData.acceleration.x*7,dy:motionData.acceleration.y*7)}}和

快速 Sprite 碰撞。穿过墙壁的物体

我正在制作一个简单的游戏(使用Swift和SpriteKit),我有一个可以四处拖动的圆圈。但圆圈不允许穿墙。我的碰撞BitMask完美运行,但是当我拖动得足够快时,圆圈最终会穿过墙壁。PlayerSprite的初始化是这样的:funcinitPlayerSprite(){letplayerTexture=SKTexture(imageNamed:"player.png")letoriginX=CGRectGetMidX(self.frame)letoriginY=CGRectGetMidY(self.frame)player=SKSpriteNode(texture:playerTe

swift - 如何让两个 SKSpriteNode 的位置始终相同?

我有两个SKSpriteNode,我想保持相同的位置。newLeftObject和newLeftObjectBackground。最好的方法是什么使两个物体即使在对它们施加力时也始终保持相同的位置。我尝试将它们的质量和密度设置为彼此相等,但它们在下落时的位置仍然略有不同。谢谢,感谢您的帮助!funccreateNewObjectLeftAndMoveToCenter(){colorBackground.removeFromParent()blackBackground.removeFromParent()varnewLeftObject=SKSpriteNode()varnewRigh

ios - 何时使用 sceneDidLoad v didMove(查看 :)

有人可以帮我理解GameScene中sceneDidLoad和didMove(toview:)之间的区别吗?我意识到didMove(toview:)一旦场景出现,就会被调用。同时sceneDidLoad场景初始化后被调用。所以它的逻辑顺序是先是sceneDidLoad,然后是didMove(toview:)(对吧?)话虽如此,我正在尝试使用以下方法创建一个弹跳球:letborderBody=SKPhysicsBody(edgeLoopFrom:self.frame)self.physicsBody=borderBodyphysicsWorld.gravity=CGVector(dx:0

swift - 快节奏的 SpriteKit 游戏具有不规则的 CPU 事件,并且尽管帧速率保持在高水平,但仍会出现抖动/滞后 - Swift

我在一个简单但快节奏的SpriteKit游戏中遇到了问题,但我已经将我的代码缩减为一个弹跳球,但问题的程度仍然较小:overridefuncdidMove(toview:SKView){super.didMove(to:view)physicsWorld.contactDelegate=selfphysicsWorld.speed=1physicsWorld.gravity=CGVector(dx:0.0,dy:0.0)letborderBody=SKPhysicsBody(edgeLoopFrom:self.frame)borderBody.friction=0self.physic

ios - 我可以在 Swift 中使用带括号的选择器吗?

我想知道如何在Swift3中使用Selector,包括func所需的括号中的值。letfireRecogniser=UISwipeGestureRecognizer(target:self,action:Selector(("shootShot")))^那是我拥有的识别器,但是方法“shootShot”有一个用于Element的参数,它是我拥有的一个enum。这里是'shootShot'函数:funcshootShot(type:Element){letshot=SKSpriteNode(imageNamed:"\(type)Shot")shot.texture?.filteringM

ios - 为 SpriteKit 中的函数添加延迟

我希望只允许玩家每0.7秒发射一枚导弹。我该怎么做呢?这是我的代码。我已经尝试过我在这个网站上找到的其他方法,但它们不起作用。funcfireTorpedo(){if!self.player.isPaused{ifisSoundEffect==true{self.run(SKAction.playSoundFileNamed("Rocket",waitForCompletion:false))}lettorpedoNode=SKSpriteNode(imageNamed:"Rocket")torpedoNode.position=player.positiontorpedoNode.p

swift - 选择哪些物体径向重力场会影响 swift

我正在使用swift和sprite套件开发一个Xcode项目,我想知道如何选择哪些对象受径向重力场的影响。我目前有两颗恒星和一些行星,每颗恒星后面都有一个径向重力场。问题是恒星会被它们自己的引力场吸引。我怎样才能使每个重力场只影响一颗恒星和所有行星,而不影响它跟随的恒星。我知道它与categoryBitMask和/或fieldBitMask有关系,但我不知Prop体是怎么回事。提前致谢。下面是恒星和重力场的代码。我不希望重力场影响那颗恒星。classstar:SKSpriteNode{requiredinit?(coderaDecoder:NSCoder){fatalError("in

swift - SpriteKit tilemaps 与弯曲或倾斜的地砖碰撞

我正在计划使用SpriteKit和Swift为iOS开发一款平台游戏。我研究了如何处理玩家Sprite的碰撞并偶然发现了这篇文章。http://www.learn-cocos2d.com/2013/08/physics-engine-platformer-terrible-idea/该文章建议您不要使用SpriteKit内置的物理引擎,而应自行实现移动、跳跃和碰撞处理等功能。RayWenderlichs网站上的平台教程提出了类似的方法。到目前为止一切顺利,但让我们谈谈玩家可以站立的地砖。只要瓷砖是矩形的并且具有平坦的表面(就像在RayWenderlich的教程中那样),自定义物理实现就

ios - 重力属性在 SpriteKit 场景中不起作用

importSpriteKitclassGameScene:SKScene{overridefuncdidMoveToView(view:SKView){/*Setupyourscenehere*/}overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){/*Calledwhenatouchbegins*/fortouchintouches{letlocation=touch.locationInNode(self)letsprite=SKSpriteNode(imageNamed:"BeachBall-100")se