我正在使用spriteKit(objective-C)构建一个应用程序,我正在使用intersectsNode来判断玩家绘制的线条是否与游戏板上的字母拼贴碰撞。我的程序中有另一个运行良好的intersectsNode实例,但由于某种原因,这个新场景总是返回false。我已经检查了参数,spriteKit唯一说的是确保它们都是同一棵树的child,它们肯定是(自己)。一个是SKSpriteNode,另一个是SKShapeNode。if(directionIsDecided==TRUE){for(letterTileinletterTileArray){if([letterTileinte
我想运行一个重复的SKAction但每次重复时使用随机值。我读过thisquestionhere这显示了一种方法来做到这一点。但是,我希望我的Sprite的Action是动画的,而不是简单地改变它的位置。我想出的一个解决方案是运行一系列操作,最后一个操作以递归方式调用我的move方法:-(void)moveTheBomber{__weaktypeof(self)weakSelf=self;floatrandomX=//determinenew"randomX"positionSKAction*moveAction=[SKActionmoveToX:randomXduration:0.2
如何让我的硬币在我的玩家碰撞时消失?我不知道我是否应该使用SKNode或什么:/。请帮忙,我似乎无法弄明白代码:-(void)spawnCoin{SKNode*coinNode=[SKNodenode];coinNode.position=CGPointMake(self.frame.size.width+_buildTexture1.size.width+150+(arc4random()%100),0);coinNode.zPosition=-10;CGFloaty=arc4random()%(NSInteger)(self.frame.size.height/2)+40;SKAc
我想用SKAction循环我的背景音乐,但当我切换到另一个场景时,音乐在一行后停止。有没有办法开始循环并在不同的场景中继续播放?现在代码放在MyScene的init方法中-那是正确的地方吗?也许didFinishLaunchingWithOptions?这是我尝试过的:if(delegate.musicOn==YES&&delegate.musicIsPlaying==NO){SKAction*playMusic=[SKActionplaySoundFileNamed:@"loop.wav"waitForCompletion:YES];SKAction*loopMusic=[SKAct
我设置了一个英雄和一些从上到下移动的平台。有了这些,我有collisionBitMasks,如果英雄来自上方,它会检测英雄何时降落在平台上(让英雄跳过平台)if(_hero.physicsBody.velocity.dy>0){_hero.physicsBody.collisionBitMask=0;}else{_hero.physicsBody.collisionBitMask=platformCategory;}一切正常,除了英雄不断在平台上弹跳。有没有办法让他坐在上面,同时平台在下降?我尝试使用physicsBody.resting和physicsBody.friction,但没
我有两个SKShapeNodes——一个具有基于边缘的SKPhysicsBody,一个基于体积——我想检测它们的交点而不发生碰撞。我的这个工作正常,SKPhysicsContactDelegate接触方法在一个传递到另一个接触方法时被调用,但我的问题是didEndContact在edges不再相交时被调用,即使一个body完全包含在另一个body中。确定真正接触或重叠的最佳方法是什么,而不仅仅是边缘相交?我试过usesPreciseCollisionDetection,但没有用。 最佳答案 CGPointlocObj1=[sprit
我最近开始使用sprite-kit。我知道touchesBegan只需轻按一下即可,但我可以使用什么来识别按住的触摸吗? 最佳答案 如果你想实现像射击这样的东西,那么你需要在touchesBegan方法中开始射击,在touchesEnded方法中停止射击:-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{[selfstartShooting];}-(void)touchesEnded:(NSSet*)toucheswithEvent:(UIEvent*)even
一个节点有可能有两条物理体路径吗?我想创建一个节点,节点两侧有两个(圆形)物理体。如果不可能,是否有任何变通方法可以实现?谢谢 最佳答案 您想使用[SKPhysicsBodybodyWithBodies:...]。来自docs:Theshapesofthephysicsbodiespassedintothismethodareusedtocreateanewphysicsbodywhosecoveredareaistheunionoftheareasofitschildren.Theseareasdonotneedtobeconti
执行此操作的最佳方法是什么?我看到了CCEaseSineInOut操作,但它看起来不像可以用来执行此操作。我需要从屏幕的一侧移动到另一侧。Sprite应在屏幕上以正弦波模式移动。 最佳答案 我总是喜欢完全控制CCNode运动。我只使用CCAction来做非常基本的事情。虽然您的案例听起来很简单,可以用CCAction来处理,但我将向您展示如何根据任何函数随时间移动CCNode。您还可以使用相同的技术更改比例、颜色、不透明度、旋转,甚至anchor。@interfaceSomeLayer:CCLayer{CCNode*nodeToMo
我只是想在景观中设置一个基本场景,使用重力,并将场景置于边缘循环中。我设置了场景的物理体和mainCharacterSprite物理体,这是我的代码:-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){self.backgroundColor=[SKColorredColor];[selfsetPhysicsBody:[SKPhysicsBodybodyWithEdgeLoopFromRect:[selfframe]]];}returnself;}-(void)setupMain{if(!self.mainC