我一直在使用SKTexture按以下方式在didBeginContact中更改SKSpriteNode的颜色和大小。iffirstBody.categoryBitMask==spriteCategory&&secondBody.categoryBitMask==enemyCategory{varnewSprite=firstBody.nodeletnewImage=SKTexture(imageNamed:"newSprite.png")(newSpriteas?SKSpriteNode)?.size=newImage.size()//magicoldToNewSpriteAction
最后一行有问题。我该如何解决?问题说“无法将‘字符串’类型的值转换为预期的参数类型‘SKNode’。''这是我的代码:importSpriteKitletBallCategoryName="ball"classGameScene:SKScene{letball=childNodeWithName(BallCategoryName)as!SKSpriteNode 最佳答案 问题您在对象初始化之前使用self。事实上写这个letball=childNodeWithName(BallCategoryName)as!SKSpriteNode
我尝试了几种不同的方法来检测didBeginContact方法中的碰撞,但我不确定哪种方法更有效-我正在尝试减少帧速率下降。方法一:ifletthisMine=nodeAas?Mine{ifletthisPlayer=nodeBas?Player{thisMine.explode()thisPlayer.takeDamage(thisMine.damage)}}elseifletthisMine=nodeBas?Mine{ifletthisPlayer=nodeAas?Player{thisMine.explode()thisPlayer.takeDamage(thisMine.dam
我正在用SpriteKit编写一个游戏,并且正在编写一个部分,其中“关卡”是从文本文件中加载的,在文本文件中用“x”标记的每个位置放置一个墙节点。但是,如果我知道会有很多节点,并且它们都是从同一个“wall.png”文件加载的,那么加载一次图像然后在每次需要时复制对象是否更有效,还是每次只加载图像?forlineinlines{forletterinline{ifletter=="x"{letwall=SKSpriteNode(imageNamed:"wall")self.addChild(wall)}else{...}}}对比letwall=SKSpriteNode(imageNam
因此,我将我的游戏球类型从形状调整为图像,这迫使我重做游戏的物理特性。我是swift的新手,一直在努力解决我在swift游戏中的碰撞问题。classGameScene:SKScene,GameDelegate,SKPhysicsContactDelegate{varball:Ball!letballSpeedX=CGFloat(500)//ball=Ball(imageNamed:"colorBall.png")enumCollisionTypes:UInt32{caseFloor=1caseBall=2}//boardletboards=Boards.make(CollideType
我有一个空闲播放器动画,我想在一些动画之间进行平滑过渡。空闲动画是默认动画,我希望能够从该过渡切换到另一种状态(比如说战斗),然后再回到空闲状态。空闲角色动画的代码目前是这样的:self.addChild(playerAnimation)playerAnimation.runAction(SKAction.repeatActionForever(SKAction.animateWithTextures(playerAnimationManager.idleManAnimation.textureArray,timePerFrame:0.1)))现在,这计划暂时持续下去,但我需要拦截它并
我希望实现的结果:我希望从存储在数组中的3个不同位置随机生成一个节点。一旦产生,我希望节点下降。随着时间的推移,我希望节点以更快的速度下降。我目前拥有的:节点在设定的位置生成并正常掉落。该节点目前不会随机生成,并且它下落的速度不会增加。我编写了一个数组,但它目前没有按应有的方式运行。更新代码:varnodeDropTime:TimeInterval=5funcfallingNodeAction(){self.node=SKSpriteNode(imageNamed:"node2")self.node.zPosition=1self.node.physicsBody=SKPhysicsB
我试图将Sprite的初始角度设置为90度。我不想调用Action,有没有办法像设置位置一样设置Sprite的角度参数? 最佳答案 z旋转您可以使用接受辐射的SKNode的zRotation属性度数自辐射度There's一个有用的扩展extensionInt{vardegreesToRadians:Double{returnDouble(self)*M_PI/180}varradiansToDegrees:Double{returnDouble(self)*180/M_PI}}sprite.zRotation=CGFloat(90.
所以,我在Xcode上用Swift玩了这个游戏,我有一个跳跃的SKShapeNode。不过,我希望这种跳跃与玩家的触感相称。因此,小水龙头会跳得小,而轻快的水龙头会跳得更高。怎么可能做到这一点(请注意,我不想要任何3D触摸选项)? 最佳答案 通常,游戏中的这类事情是通过计时按下并相应地改变跳跃高度来完成的。(这也是为什么在2D平台游戏中使用物理对于这类事情来说很棘手)。在像super马里奥这样的游戏中,它的做法是在按下触摸键后立即开始跳跃运动。然后在一段时间后(因为角色“向上”跳跃了一半),您检查触摸是否仍然向下。如果是,你可以让跳
我正在学习Swift以创建适用于iOS的游戏,但我正在努力弄清楚Sprite将如何与背景发生碰撞和交互。基本游戏是一个球,您引导它走下迷宫,但迷宫可能比屏幕大几倍。迷宫可以是一个大的位图,也可以由图block组成,但我还没有决定如何让球与迷宫互动。我可以制作迷宫Sprite节点中的所有图block,然后让SpriteKit解决它,但我认为这不是一个很好的选择。然后是SpriteKit边缘体,如图所示-https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/SpriteKit_P