草庐IT

Sprite-kit

全部标签

ios - 未调用 UIScrollViewDelegate 函数

当我拖动它时,我的View似乎在滚动(边栏出现并四处移动),但我的委托(delegate)函数没有触发。问题:为什么协议(protocol)函数中的println永远不会被调用?作为背景,我正在尝试重写https://github.com/bobmoff/ScrollKit在Swift中,这就是UIView与SKView等混合的原因。我的日志输出是:852.0480.0FinishedviewDidLoad代码是:importUIKitimportSpriteKitvarkViewTransformChanged="viewtransformchanged"varscene=GameS

ios - SpriteKit : detect overlap of rotated nodes?

假设节点A是节点B的子节点。更改nodeB的zRotation值可以有效地旋转nodeA,但nodeA的位置(因为它是相对于nodeB的)保持不变。现在假设节点A从节点B中移除,但它的位置在屏幕中保持固定。nodeC被添加到nodeB并旋转。如何检测节点C和节点A之间的重叠?SKNode中的containsPoint,asdescribedhere,不起作用,因为nodeC和nodeA的位置永远不会因旋转而改变。 最佳答案 您可以测试节点与-(BOOL)intersectsNode:(SKNode*)node的交集。但在这种情况下,

Swift - SpriteKit CGPoint 对齐

我正在swift进行一个项目,我能够制作一个Sprite。我正在尝试在许多不同的位置制作一个Sprite。作为测试,我将游戏场景中的代码替换为:classGameScene:SKScene{overridefuncdidMoveToView(view:SKView){letwall=SKSpriteNode(imageNamed:"Wall")wall.position=CGPoint(x:289,y:0)}}我不明白的是这段代码在左下角制作了一个Sprite。正如预期的那样,在y方向上只有一半的Sprite显示,但x方向似乎完全关闭。如果我尝试将x值设置为289以下的任何数字,它将不

ios - 大 SKSpriteNode 导致帧率下降

我正在使用相当大的SpriteNodes在iOSSwift中移动我的背景(其中包括)。letrunningBar=SKSpriteNode(imageNamed:"Bar")self.addChild(self.scoreText)它是这样移动的:overridefuncupdate(currentTime:NSTimeInterval){//GolfupdateRunningBarPosition()}funcupdateRunningBarPosition(){runningBar.position.y=CGFloat(Double(runningBar.position.y)+c

ios - 在一段时间内手动移动节点

我目前声明了以下函数,这些函数将节点移动到场景更新函数中调用的目标位置(在这种情况下,我不能使用SKAction.moveTo)funcmoveTowardsPosition(targetPosition:CGPoint,withTimeIntervaltimeInterval:NSTimeInterval){letcurrentPosition=self.positionvardeltaX=targetPosition.x-currentPosition.xvardeltaY=targetPosition.y-currentPosition.yvarmaximumDistance=3

ios - 使用 SpriteKit 抛出一个对象

我现在有以下代码。即使代码构建成功,我似乎也无法让它工作。我试图做到这一点,当你轻弹物体时,它会以你开始和结束触摸的速度移动。importSpriteKitclassGameScene:SKScene{varsprite:SKSpriteNode!vartouchPoint:CGPoint=CGPoint()vartouching:Bool=falseoverridefuncdidMoveToView(view:SKView){self.physicsBody=SKPhysicsBody(edgeLoopFromRect:self.frame)sprite=SKSpriteNode(c

ios - Swift SpriteKit - 逐渐增加旋转

我正在试验@nickfalk在Howtorotatespriteinspritekitwithswift上的回答关于如何在spritekit中旋转sprite。我如何调整它以逐渐将旋转速度提高到最大值,然后当点击屏幕时,它会逐渐减慢并在x时间内向相反方向移动?谢谢!托比。 最佳答案 好的,以下(概念证明有点困惑)以恒定速度旋转Sprite。点击+按住它会逐渐减慢旋转速度直至停止。结束触摸会立即使旋转恢复到全速。我设置了一个具有以下属性的场景:varsprite:SKSpriteNode?和varshouldDecelerate=fa

ios - Swift 中指针的替代品?

我正在使用SpriteKit制作游戏。当特定类型的两个sprite发生碰撞时,我想记下其中一个sprite,然后在游戏后期更新该sprite。使用指针,我基本上会执行以下操作。当两个对象发生碰撞时,我会设置一些全局指针指向我想要跟踪的Sprite的地址。然后,当修改函数被调用时,它会修改指向该地址的任何内容,实质上是修改发生碰撞的Sprite。不过我宁愿不使用指针,因为Swift不鼓励直接访问内存。我无法通过引用修改函数来传递Sprite,因为修改函数(didSimulatePhysics)未被我的代码调用。谢谢! 最佳答案 你可以

swift - GKAgentDelegate 的协议(protocol)方法在 Swift 中不对吗?

在GameplayKit中,我想遵循协议(protocol)GKAgentDelegate,因此使用委托(delegate)方法funcagentDidUpdate(agent:GKAgent)。问题是,在这个方法中,参数agent被声明为GKAgent,而不是GKAgent2D,所以我无法访问agent.position,因为position属性在GKAgent2D中,而不是GKAgent...但是在Objective-CAPI中,agent被声明为GKAgent2D。请帮忙。 最佳答案 由于GKAgent2D是GKAgent的子

ios - SKNode 框架不正确?

这是我的NumberTile类的构造函数:classNumberTile:SKShapeNode{vartileColorArray=NSArray(objects:"#996666","#a65959","#b34d4d","#bf4040","#cc3333","#d92626","#e61919")//redinit(xPos:NSInteger,yPos:NSInteger){super.init()letsize=CGSize(width:40,height:40)self.path=CGPathCreateWithRect(CGRect(origin:CGPointZero