草庐IT

Spritekit

全部标签

ios - SpriteKit 中的平滑 Sprite 运动

您好,我正在使用SpriteKit在Swift中制作游戏,我想知道是否有办法让Sprite平滑移动。目前我在SKAction中使用moveTo方法,Sprite会在设定的时间段内到达目标位置——这意味着如果位置较远,Sprite会更快到达那里。我想知道是否有一种可靠的方法可以让Sprite加速到最大设定速度,然后在到达该位置时减速。感谢所有帮助。 最佳答案 使用勾股定理根据距离获得正确的持续时间以获得所需的速度。看这里:https://stackoverflow.com/a/19126642/431271就最后的减速而言,你可以像这

ios - 如何避免在 SpriteKit 中传递 currentTime?

我在开发我的应用程序时发现,我的一些节点需要访问传递给更新方法的currentTime以实现业务逻辑。不断地将this作为参数传递给所有可能需要它的初始化程序和方法似乎很麻烦。我想知道其他开发人员可能对这个问题有什么解决方案(是否有任何标准模式)。访问系统时间是一个选项,但可能会有一些开销,并且每次调用时都会有所不同。也许可以使用全局变量,但我想知道是否存在任何线程问题或在闭包中使用它的问题。选项? 最佳答案 好吧,我想你可以创建某种全局变量,例如:staticvar_currentTime:CFTimeInterval=0然后在您

ios - 调整使用 SKPhysicsBody 创建的 SpriteKit SKPhysicsBody 的大小(circleOfRadius :)

我正在构建一个SpriteKit“链式react”游戏,其中的圆圈在“爆炸”时会变大。我正在使用SKPhysicsBody(circleOfRadius:)初始值设定项来为圆圈创建物理体。不幸的是,这些物理体似乎不会随着圆变大而调整大小,而且它们没有我可以设置的公开的.radius属性。有什么方法可以在SpriteKit中调整物理体的大小,还是我需要每帧都创建一个新的物理体?(这就是我在下面所做的,代码运行良好,但感觉在更新循环中创建新的物理体真的很低效。)PS-我知道对于圆圈,我可以使用三角函数轻松进行准确的碰撞检测以获得距离,但我想使用SpriteKit碰撞检测来实现其他一些效果。

IOS Swift SpriteKit 根据帧大小缩放整个 View

我希望我的游戏场景在SpriteKit中根据设备的大小显示不同的大小。现在我正在手动调整大小和定位我的一些节点,使用“if”语句检查帧大小,但不幸的是,由于我的游戏机制,我无法对所有Sprite执行此操作(我正在检测基于我的节点的位置,而不是通过使用PhysicsBodies。如果我要更改节点的大小,将不会检测到这些碰撞)。有没有一种方法可以根据设备大小来缩放View的外观,而不是实际缩放Sprite本身(即View会拉伸(stretch)以适应帧大小,但实际上Sprite实际上大小相同)?这是我可以通过从.ResizeFill(我当前使用的)更改SKSceneScaleModes来实

ios - 使用 Spritekit 的简单 Gif 动画

我真的找不到一个简单的解决方案,我看到的每个示例都只显示了非常复杂的解决方案,但我想要的只是2-3个循环的图像,所以它看起来就像是动画。与Gif动画效果相同。现在我有这个来创建一个图像MonsterNode=SKSpriteNode(imageNamed:"MonsterNode_GameScene")但是我如何将MonsterNode变量设置为此类动画?我真的在寻找实现这一目标所需的最少代码。 最佳答案 主要思想是使用animateWithTextures来完成这项任务。您需要设置Sprite需要动画的所有帧以及每帧的显示时间。然

ios - 使用 spritekit 检测释放快速滑动时的坐标

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion您好,如果有人可以帮助我,那就太好了!我需要获取滑动的坐标。我可以从locationInNode等获取初始触摸的坐标,但是我们如何获取滑动释放点的坐标?functouchesBegan(touches:Set,withEventevent:UIEvent

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

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 - SpriteKit - touchesMoved 调用不够频繁 - 快速移动

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

ios - SpriteKit - 使某些 SpriteNodes 在不禁用其物理体的情况下不会发生碰撞

我在屏幕上有4个SpriteNode,我不希望它们相互弹开,而是相互流过,同时保持与某些SpriteNode和屏幕框架的碰撞。我已经为所有这些声明了类别:letBCategory:UInt32=0x1还添加了位掩码:b.physicsBody!.categoryBitMask=BCategoryb2.physicsBody!.categoryBitMask=B2Categoryb3.physicsBody!.categoryBitMask=B3Categoryb4.physicsBody!.categoryBitMask=B4Categoryp.physicsBody!.categor