我想创建一个增加尺寸的墙。但是当我增加物理体的尺寸时,它不会跟随(它保持相同的尺寸)。所以我有一个想法,一个永远重复的SKAction执行一个选择器,它根据对象的大小调整我的物理体的大小。所以我想编写如下代码:-(void)sizeChange:(SKSpriteNode*)sprite{sprite.physicsbody=[SKPhysicsBodybodyWithRectangleOfSize:sprite.size];}现在我想运行一个执行选择器的SKAction。所以我写了这个:SKAction*perform=[SKActionperformSelector:@select
只是想增强这段代码的一部分,我想知道我是否可以在序列中包含一个if语句?当碎片数大于10时,我想减慢碎片的产生。这是当前代码:-(void)spawnDebris{//debrisSKSpriteNode*debris=[SKSpriteNodespriteNodeWithTexture:[SKTexturetextureWithImageNamed:@"debris1.png"]size:CGSizeMake(40,40)];debris.zPosition=1.0;debris.physicsBody=[SKPhysicsBodybodyWithCircleOfRadius:15]
我的应用程序是一款具有应用程序状态保存和恢复功能的SpriteKit游戏。当保留应用程序状态时,我当前SKScene中的大部分节点都已编码。当运行SKAction的节点被编码和解码时,Action将从头开始。这似乎是标准的SpriteKit行为。对我来说,这种行为对于SKActionsequence最为明显。在解码时,序列重新开始,不管它的组件Action有多少已经完成。例如,假设运行序列的代码如下所示:[selfrunAction:[SKActionsequence:@[[SKActionfadeOutWithDuration:1.0],[SKActionfadeInWithDura
例如,如果我想制作自己的自定义动画,并通过x+=10以编程方式在每一帧移动一个SKSpriteNode,SpriteKit是否仍会正确应用物理,或者我必须始终使用SKAction? 最佳答案 无论您以何种方式或何时进行操作,都可以手动移动具有物理体的节点。但无论如何都不推荐这样做,因为它会对物理模拟产生不利影响。节点(View)可能与body的位置不同步1帧,您可能会将body移动到物理引擎将强制解决的碰撞中,从而导致跳跃、抖动、爆炸速度或跳过碰撞。当你使用物理时,坚持通过力、脉冲或直接改变body速度来移动物理body。
我正在创建一个我不希望玩家能够移出屏幕的游戏。该节点跟随玩家移动触摸。我的代码“正在build中”,因此玩家无法从顶部或右侧移出,但我不希望玩家能够从任何一侧移出。-(void)movementPlayer{SKAction*actionMoveX=[SKActionmoveToX:MIN(location2.x-playerPositionX,self.size.width-(_player.size.width/2))duration:0];SKAction*actionMoveY=[SKActionmoveToY:MIN(location2.y-playerPositionY,s
我正在尝试在有一个子节点的SKSpriteNode上运行一系列SKActions,所有Action都在2个形状上一起执行,除了:[SKActionresizeToWidth:height:duration:]这是我的代码:-(void)CreateCards{for(inti=0;i 最佳答案 要达到预期效果,您应该使用scaling而不是调整大小。替换:SKAction*zoom=[SKActiongroup:[NSArrayarrayWithObjects:[SKActionmoveTo:CGPointMake(60,345)d
我想运行一个重复的SKAction但每次重复时使用随机值。我读过thisquestionhere这显示了一种方法来做到这一点。但是,我希望我的Sprite的Action是动画的,而不是简单地改变它的位置。我想出的一个解决方案是运行一系列操作,最后一个操作以递归方式调用我的move方法:-(void)moveTheBomber{__weaktypeof(self)weakSelf=self;floatrandomX=//determinenew"randomX"positionSKAction*moveAction=[SKActionmoveToX:randomXduration:0.2
我想用SKAction循环我的背景音乐,但当我切换到另一个场景时,音乐在一行后停止。有没有办法开始循环并在不同的场景中继续播放?现在代码放在MyScene的init方法中-那是正确的地方吗?也许didFinishLaunchingWithOptions?这是我尝试过的:if(delegate.musicOn==YES&&delegate.musicIsPlaying==NO){SKAction*playMusic=[SKActionplaySoundFileNamed:@"loop.wav"waitForCompletion:YES];SKAction*loopMusic=[SKAct
我像这样创建了一个SKSpriteNode://EasyButtonImage_easyImage=[[SKSpriteNodealloc]initWithImageNamed:@"smiley.png"];_easyImage.position=CGPointMake(-20,screenHeight/2);_easyImage.name=easyBtnName;_easyImage.physicsBody.affectedByGravity=NO;_easyImage.zPosition=10;[selfaddChild:_easyImage];在触摸开始方法中单击后,我正在尝试为
我的场景中有一个sprite(healthbar),我希望在玩家被击中时为其着色。我可以使用greenColor和blueColor为Sprite着色。但是,redColor、brownColor、yellowColor、cyanColor和whiteColor似乎都不起作用。Sprite:_健康栏代码:SKAction*pulseRed=[SKActionsequence:@[[SKActioncolorizeWithColor:[SKColorredColor]colorBlendFactor:1.0duration:0.15],[SKActionwaitForDuration:0