我正在创建一个2Dautoscroller,当我的播放器(带有一个圆圈physicsBody)与一个SKActionmoveTo驱动的障碍物发生碰撞时,它会向它移动,它会变小,几乎无法察觉的滞后。我尝试降低物体的摩擦力和密度,但无济于事。有什么想法吗? 最佳答案 您已选择将圆与phycsicsBody一起使用。SKPhysicsBody对象用于向节点添加物理模拟。当场景处理新帧时,它会对附加到场景中节点的物理体执行物理计算。这些计算包括重力、摩擦和与其他物体的碰撞。场景完成这些计算后,更新节点对象的位置和方向。您还选择了使用SKAc
我有一个函数可以创建SpriteNode副本并以指定的间隔沿矩形路径移动每个副本。我对这个间隔有一个问题,即Action以不一致的间隔执行,在Action运行时在Sprite节点之间产生奇怪的间隙。varitems=[SKSpriteNode]();letitem=SKSpriteNode(imageNamed:"Spaceship");funccreateItem(scene:SKScene){letsquare=UIBezierPath(rect:CGRect(x:-300,y:-150,width:700,height:300));letfollow=SKAction.follo
我试图阻止我的背景在碰撞时移动。这就是创建和移动背景的原因:letbgTexture=SKTexture(imageNamed:"bg.png")letmoveBGanimation=SKAction.move(by:CGVector(dx:0,dy:-bgTexture.size().height),duration:4)letshiftBGAnimation=SKAction.move(by:CGVector(dx:0,dy:bgTexture.size().height),duration:0)letmoveBGForever=SKAction.repeatForever(SKA
我有一个代表椭圆的SKShape节点。玩家被放置在基于椭圆CGPath的贝塞尔路径的当前点上:我有两个玩家节点可以执行的操作。玩家可以顺时针或逆时针沿着路径行驶。rotateCounterClockwiseAction=SKAction.followPath(counterClockwisePath.CGPath,asOffset:false,orientToPath:true,duration:1)rotateClockwiseAction=SKAction.followPath(clockwisePath.CGPath,asOffset:false,orientToPath:tru
我有一个iOSSpriteKit游戏,它有一个移动节点。当您按下暂停按钮时,将调用node.isPaused=true行。但是,如果您按下暂停键,然后最小化应用程序并重新启动它,即使在透明的“暂停”菜单下,节点也会恢复移动。我尝试了以下答案中的命题:Answer1.但是,即使我在任何状态下调用场景的pauseGame方法,该函数都会被调用,但即使在暂停菜单下,节点也会重新开始移动。我也试过来自:Answer2的答案.但是CBApplicationDidBecomeActive()甚至都没有被调用。我什至尝试在链接1的方法中使用scene?.view?.isPaused=true,但它不
我正在尝试使用SpriteKit制作一个暂停菜单,当玩家继续游戏时,它会动画(移动)出屏幕。我创建了一个SKAction并在touchesbegins中运行它,如下所示:letduration=TimeInterval(0.5)letmoveAction=SKAction.move(to:CGPoint(x:0,y:495),duration:duration)pauseScroll?.run(moveAction)pauseScroll初始化为:weakvarpauseScroll:SKSpriteNode?overrideinit(size:CGSize){...letpauseS
为什么从未调用完成?我对此感到非常抱歉,一个代码转储...因为我不知道为什么这一切的每一部分都有效,除了完成的调用。未调用其完成的SKAction运行,除了完成之外的所有操作。是这样的:curtain.run(fadeMoveWipeAndReveal,completion:{onDone(),print("I'mdone!!!!")})在以下类中:importSpriteKitclassWipeCurtain:SKSpriteNode{varwipeCurtainBase:SKSpriteNode?varreturnable=SKNode()varmoveRight=SKAction
我一直在尝试制作一个永远运行的SKAction,我可以随时停止它。我是这样做的:overridefuncdidMove(toview:SKView){run(SKAction.repeatForever(SKAction.sequence([SKAction.run(drawFrame),SKAction.wait(forDuration:0.01),])),withKey:"frameDrawing")}然后在drawFrame函数中,我像这样停止SKAction:funcdrawFrame(){//(code)ifstop{removeAction(forKey:"frameDra
我有以下自定义SKAction工作,但作为EaseIn而不是EaseOut。我想让它缓和!我使用在网络上找到的各种缓动方程来更正它,但不幸的是失败了。letduration=2.0letinitialX=cameraNode.position.xletcustomEaseOut=SKAction.customActionWithDuration(duration,actionBlock:{node,elapsedTimeinlett=Double(elapsedTime)/durationletb=Double(initialX)letc=Double(targetPoint.x)le
moveTo的duration属性在runBlock中没有被遵循,允许序列中的后续Action在以下情况下立即执行它应该只在duration秒后执行。代码A(正确执行的序列):letrealDest=CGPointMake(itemA.position.x,itemA.position.y)letmoveAction=SKAction.moveTo(realDest,duration:2.0)itemB.runAction(SKAction.sequence([SKAction.waitForDuration(0.5),moveAction,SKAction.runBlock{item