我有一个空闲播放器动画,我想在一些动画之间进行平滑过渡。空闲动画是默认动画,我希望能够从该过渡切换到另一种状态(比如说战斗),然后再回到空闲状态。空闲角色动画的代码目前是这样的: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
我在从pixelData创建SKSpriteNode时遇到问题。下面是我的代码。varpixelData:[UInt32]=[UInt32](count:256,repeatedValue:0xff0000ff)pixelData.appendContentsOf([UInt32](count:256,repeatedValue:0xff00ff00))pixelData.appendContentsOf([UInt32](count:256,repeatedValue:0xffff0000))pixelData.appendContentsOf([UInt32](count:256,
我在场景编辑器中设置我的SKSpriteNode的用户数据:然后我尝试获取它,使用:letsprite:SKSpriteNode=self.childNode(withName:"sprite")as?SKSpriteNodeletnumero:Int=sprite.userdata?.valueForKey("numero")as!Int但我得到了nil值:“fatalerror:在展开可选值时意外发现nil”我还尝试使用以下方法初始化userData:sprite.userData?=NSMutableDictionary()但同样的结果... 最佳答案
一旦Sprite从父级移除,我会尝试调用一个函数,以便Sprite可以复制并再次进入场景。每次我在当前代码中执行此操作时,它都会在原始Sprite出现之前进行复制从父项中删除导致重复的Sprite。这是我目前的代码:importSpriteKitletplankName="woodPlank"classPlankScene:SKScene{varplankWood:SKSpriteNode?varplankArray:[SKSpriteNode]=[]overridefuncdidMove(toview:SKView){plankWood=childNode(withName:plan
在我的游戏中,您点击屏幕上的任意位置,子弹就会朝那个方向飞去。唯一的问题是您可以尽可能快地拍摄。有什么办法可以在每次拍摄后增加延迟。所以我想开枪,等1秒再开枪。这是我在touchesEnded中的代码:overridefunctouchesEnded(_touches:Set,withevent:UIEvent?){guardlettouch=touches.firstelse{return}lettouchLocation=touch.location(in:self)//Setupinitiallocationofbulletandpropertiesletbullet=SKSpr
我正在用Swift3和SpriteKit做一个小游戏。我想与我的角色和一个特殊物体发生碰撞,使我的分数增加1,但由于某种原因,当我检测到碰撞时,分数增加了2或3。我正在从父节点中删除我的SpriteKitNode但它似乎不起作用。这是我的代码:funccheckCollisionsObject(){enumerateChildNodes(withName:"objeto"){node,_inletobjeto=nodeas!SKSpriteNodeifobjeto.frame.intersects(self.personaje.frame){objeto.removeFromParen