草庐IT

Sprite-Kit

全部标签

swift - 如何绘制两种不同颜色的空心圆?

我非常熟悉绘制填充的createEllipseInRect形状节点,但我想知道是否有办法以编程方式执行此操作。我想要一个从中心split的圆圈,两边都有两种不同的颜色。我没有代码,因为我不知道从哪里开始。somethinglikethis非常感谢帮助。 最佳答案 您可以尝试使用SKCropNode,这允许您只显示每个圆的一半。有关此示例,请参见下面的代码。classGameScene:SKScene{overridefuncdidMoveToView(view:SKView){anchorPoint=CGPointMake(0.5,

ios - SpriteKit/Swift - 二元运算符 '>' 不能应用于两个 'CGVector' 操作数

在我的游戏中,我需要比较碰撞时的2个速度。两种速度都采用CGVector(dx:,dy:)格式。但是Swift3不允许我使用“>”和“funcdidBegin(_contact:SKPhysicsContact){varfirstBody=SKPhysicsBody()varsecondBody=SKPhysicsBody()letballNode=self.childNode(withName:ballName)letdefaultSpeedX:CGFloat=100letdefaultSpeedY:CGFloat=-100letmaxSpeed=CGVector(dx:defaul

ios - 使用 Sprite Kit 和 Swift 跳跃

我正在SpriteKit和Swift中创建一个应用程序,我想创建一个在按下屏幕时向上跳跃的Sprite,因此当屏幕被按下得更高时跳得更高。我已经实现了这种效果,但是直到屏幕释放后才应用物理引擎中的重力。因此,跳跃是无限的(呈指数增长),而不是在某一点趋于平稳(如二次方程/抛物线)。如何在Sprite运动过程中主动施加重力?这是我的基本运动代码:overridefuncupdate(_currentTime:TimeInterval){//Calledbeforeeachframeisrendered//touchedistruewhilescreenistouchediftouched

swift - SKCameraNode 未居中

我正在使用Swift3、Xcode和SpriteKit我有一个名为cam的SKCameraNode,我在相机位置放置了一个节点来检查它:varcam:SKCameraNode!letcameraNode=SKSpriteNode(imageNamed:"hx")overridefuncdidMove(toview:SKView){cam=SKCameraNode()camera=camaddChild(cam)cam.position=CGPoint(x:playableRect.midWidth,y:playableRect.midHeight)addChild(cameraNode

ios - 在 Swift 中混淆反向触摸事件

在我的函数中overridefunctouchesBegan(_touches:Set,withevent:UIEvent?){fortouchintouches{lettouchLocation=touch.location(in:self.view)print("X:\(touchLocation.x)Y:\(touchLocation.y)")}}我得到了反转的Y值。如果我点击顶部,我得到~0值,如果我点击底部,我得到高值。这使我的spriteimmoving朝错误的Y方向移动。但是,如果我删除self.view中的“.view”,它就会正常工作。有谁知道为什么我用self.vi

swift - SpriteKit 从类调用函数

这是来自SpriteKit中的一个简单游戏,其中包含一个Ball()类,该类具有一个函数shieldOn(),目前,它只是将单个球的纹理替换为被盾牌包围的球的纹理。球在GameScene中是这样创建的:funcgetBall(){letball=Ball()ball.createBall(parentNode:self)}这是球类classBall:SKSpriteNode{funccreateBall(parentNode:SKNode){letball=SKSpriteNode(texture:SKTexture(imageNamed:"ball2"))ball.physicsBo

ios - 将一系列不同的 SKActions 应用于不同的 SKNodes

我想创建一个SKAction序列,每个SKAction对应一个不同的SKSpriteNode。我想淡化我的layer节点,将其从父节点中删除,等待3秒,然后为我的snake节点启动一个moveSKAction。这是一些代码:funcstartGame(){layer.run(SKAction.sequence([SKAction.fadeAlpha(to:0,duration:1),SKAction.removeFromParent(),SKAction.wait(forDuration:1),]))//Heremovethesnakenode}问题是,如果我在注释处添加snake.r

swift - 使用 Swift 创建随机 CGPoint

所以,我正在尝试开发一个用Swift编写的简单游戏,但我在做一件非常简单的事情时遇到了麻烦。我无法设法创建随机CGPoint...使用arc4random时,出现编译器错误,告诉我无法在CGPoint中使用Int32。那么,有什么办法可以做到这一点?任何解决方法?谢谢! 最佳答案 也可以利用Swift对基类型的扩展来创建一组可重用的CGPoint重载函数。也许是这样的:extensionCGPoint{funcrandom()->CGPoint{returnCGPoint(x:Int(arc4random()%1000),y:Int

ios - 我如何正确检测接触和碰撞? swift iOS SKScene

问题是我无法检测到碰撞//或以我在互联网上找到的任何方式联系这是我的代码:我的口罩声明:privateletballCategory:UInt32=0x1球洞和球的加入:funcaddHole(#size:CGSize){letactionMoveDown=SKAction.moveToY(CGRectGetMidY(self.frame)-500,duration:4.7)lethole=shapedHoles()letUT=UTIL()varposition:CGFloatletrandomPosition=UT.randomNumberWith(Min:1,Max:3)switc

xcode - 碰撞时将节点粘到另一个节点

我正在制作一个iOS游戏(swiftxcode)。有一辆不断移动的汽车(SKAction)和一个可以用滑动手势移动的播放器。很好,但现在我希望如果玩家触摸汽车,它会随着汽车移动(它会粘在汽车上)现在我该怎么做呢?我尝试了很多东西,但没有一个能顺利地工作..我试过if(CGRectIntersectsRect(car.frame,player.frame)){car.position=player.position}这可行,但玩家会被踢到汽车中间,我不希望这样。我想要的是,如果玩家接触到汽车底部,它就会粘在汽车底部。我该怎么做?对于碰撞检测,我也尝试使用:funcdidBeginCont