草庐IT

Sprite-kit

全部标签

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

ios - 使用带有 SkScene 的 NSNotificationCenter 到 UIViewController

我正在使用SpriteKit使用Swift制作游戏。我正在使用界面生成器来定位我所有的按钮(菜单、重试等),这样我就可以使用自动布局。然后,我在游戏结束函数中使用NSNotificationCenter在SKScene中显示这些按钮。我可以毫无问题地使用NSNotificationCenter在SKScene中显示UIKit内容。这是我的问题,我会尽力解释。当您游戏结束时,会显示一个名为retry的UIButton。我在SKScene中为重试函数设置了一个NSNotificationCenter观察器,并在IBAction中为viewController中的按钮调用了postNotif

ios - 有什么方法可以在 Swift 中逐渐加快游戏速度?

我目前正在使用Spritekit开发一款游戏。游戏的物体会在屏幕顶部生成并落向玩家角色,当玩家角色与任何物体发生碰撞时游戏结束。我正在尝试找到一种随着时间的推移逐渐加快游戏玩法的方法,使游戏变得更加困难(即游戏开始时物体以正常速度下落,5秒后加速50%,再过5秒后再加速50%,无限次。)我是否需要使用NSTimer进行倒计时以增加应用到下落物体的重力?抱歉,如果这是一件基本的事情,我是编程新手。谢谢,jack编辑:我的敌人生成方法-letspawn=SKAction.runBlock({()inself.spawnEnemy()})letdelay=SKAction.waitForDu

swift - 使用 Swift 在 Sprite Kit 中进行碰撞检测

下面的代码来self目前正在做的一个项目,过去几天我一直在尝试自学Swift语言和SpriteKit,这是我第一次尝试游戏,它是一个FlappyBird类型的游戏.今天我在尝试编写碰撞检测代码时遇到了一个问题。当小鸟接触其中一根管道时,游戏应该暂停。但是,当我运行代码并且小鸟接触到管道时,什么也没有发生,小鸟只是从管道上弹开。我已经阅读了很多教程并观看了很多关于这个主题的视频来尝试解决我的问题并且没有任何运气。我已经在下面的代码中编写了我从上次观看的视频中学到的所有碰撞检测代码。谁能告诉我我做错了什么。任何建议将不胜感激,谢谢。////GameScene.swift//BirdFlap

swift - Sprite 套件脉冲在点

我正在尝试使用宇宙飞船上的两个点来创建“类似坦克的运动”,当两个点都受到physicsBody的插入时,宇宙飞船将向前移动(使用applyImpulse(CGVector,atPoint:CGPoint)方法)并在只有一个点获得脉冲时向左/向右转。我可以使用不带atPoint参数的applyImpulse(CGVector)方法使spaceship向前移动并且它有效,但我在使用atPoint参数。当尝试使用atPoint参数时,宇宙飞船将真正随机移动,即使我对喷气发动机1和喷气发动机2都施加了冲量,但我不确定我是否在正确的点(在图像上标记的喷气发动机点),文档对此非常模糊,我不知道如何

ios - SpriteKit - touchesMoved 调用不够频繁 - 快速移动

我正在用Swift编写一个基于SpriteKit的游戏。SKScene包含一个SKSpriteNode,它包含SKShapeNodes。其中一种形状是“玩家”。用户应该能够拖放播放器。我实现了不同的方法来让这个工作用户touchesBegan、touchesMoved、touchesCanceled和touchesEnded。基本上一切正常,只要用户以正常速度拖动“播放器”。但是,如果用户拖动“播放器”非常快,则touchesMoved方法调用的次数不够多。我认为这可能是因为我使用了SKShapeNodes但基于输出(下方)似乎并非如此。代码:overridefunctouchesBe