我是Swift和iOS的新手,我打算使用SpriteKit在iOS中设计一个国际象棋游戏(中国象棋)。我一直在集思广益设计策略。我有一个关于创建棋盘以及棋子如何移动的问题。不像国际象棋,每个棋子都移动到一个交点,我看到有人通过将每个图block创建为单独的UIview来制作国际象棋游戏板,因为中国象棋棋盘更难绘制我打算只使用棋盘图像作为一个节点,每一block都只是在板的顶部移动。通过计算每个正方形的距离从左上右下。(例如,将板宽除以8,因为一行有8个相等的正方形)这是一个好的策略还是有更好的实现方法。我发现这种方式不是最有效的,因为如果设备发生变化,电路板和部件的尺寸会保持不变吗?如
我正在尝试将GameCenter排行榜和成就添加到我的游戏中,但我在Swift中找不到任何SpriteKit教程。所有的教程都有self.presentViewController(viewController,animated:true,completion:nil)但在SpriteKit中不起作用 最佳答案 如果您已经在UIViewController中,您可以这样调用它。但是如果你想从你的SKScene显示一个UIViewController你应该访问rootViewController并从那里显示Controller:sel
在我尝试构建的新游戏中,我想知道用户何时触摸了屏幕的左右两侧BOTH以执行某些逻辑操作。我的代码:overridefunctouchesBegan(touches:Set,withEventevent:UIEvent){/*Calledwhenatouchbegins*/fortouchin(touchesas!Set){letlocation=touch.locationInNode(self)varisRight:Bool=falsevarisLeft:Bool=falseif(location.xself.size.width/2){//isRight=trueprintln("
当玩家body遇到怪物body时,永远不会调用函数funcdidBeginContact(contact:SKPhysicsContact)。我的类实现SKPhysicsContactDelegateclassGameScene:SKScene,SKPhysicsContactDelegate属性collisionBitMask我评论它是因为我读到如果我们不放置它,节点可以与所有节点碰撞我这样添加播放器:bear.position=CGPoint(x:self.frame.width/20,y:self.frame.height/5)bear.size=CGSize(width:sel
方法.removeFromParent()不会移除Sprite。怎么了?overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){guardtouches.first!=nilelse{return}letmyShot=SKSpriteNode()letmyShotAnimation=SKAction.repeatActionForever(SKAction.animateWithTextures(myShotTexture,timePerFrame:0.01))myShot.size=CGSizeMake(200,20
当我按下屏幕上的按钮时,我试图将Sprite向右移动。但是,当我尝试这样做时,我只有将Sprite移动到某个点的解决方案。所以...我希望Sprite永远向右移动,或者直到我做其他事情。这是在Xcode中使用SpriteKit中的Swift。overridefunctouchesBegan(touches:Set,withEventevent:UIEvent?){fortouch:AnyObjectintouches{letpointInTouch=touch.locationInNode(self)lettappedNode=nodeAtPoint(pointInTouch)lett
这是一个2D游戏:我有一定的生活质量SKactions永远重复,对我来说最大的两个是硬币旋转/上下摆动和水流。根据Apple的文档,SKactions是实例化的。因此,只要我将Action子类化,那么它只会运行“一次”,而不管它被使用了多少Sprite。例如,只要我的所有硬币都从同一个“硬币”类获取它们的操作,那么无论我有1个还是20个硬币,硬币操作所使用的内存占用都是相同的。综上所述,在摄像机/播放器不可见的情况下进行这些操作似乎是一种浪费。有没有一种方法可以让永远重复的Action在相机不可见时停用?我知道这违背了“永远”的目的,但据我所知,它要么选择某种静态持续时间,要么选择永远
标题说明了一切,我想让某个区域内的所有物体都比其他物体下落得慢,我很清楚我可以改变物理世界的引力,但我只需要一些物体缓慢下落,所以这不是一个选择。另外,这都是为了模拟水中的物体,所以如果有更好的方法来做到这一点,我们将不胜感激。任何帮助将不胜感激,谢谢! 最佳答案 增加physicsBody上的friction或linearDamping/angularDamping以增加对物体的阻力。如果你想让一切都慢下来,你也可以改变你的physicsWorld的speed设置(这将在水下设置中工作)
您好,我正在使用SpriteKit在Swift中制作游戏,我想知道是否有办法让Sprite平滑移动。目前我在SKAction中使用moveTo方法,Sprite会在设定的时间段内到达目标位置——这意味着如果位置较远,Sprite会更快到达那里。我想知道是否有一种可靠的方法可以让Sprite加速到最大设定速度,然后在到达该位置时减速。感谢所有帮助。 最佳答案 使用勾股定理根据距离获得正确的持续时间以获得所需的速度。看这里:https://stackoverflow.com/a/19126642/431271就最后的减速而言,你可以像这
我希望我的游戏场景在SpriteKit中根据设备的大小显示不同的大小。现在我正在手动调整大小和定位我的一些节点,使用“if”语句检查帧大小,但不幸的是,由于我的游戏机制,我无法对所有Sprite执行此操作(我正在检测基于我的节点的位置,而不是通过使用PhysicsBodies。如果我要更改节点的大小,将不会检测到这些碰撞)。有没有一种方法可以根据设备大小来缩放View的外观,而不是实际缩放Sprite本身(即View会拉伸(stretch)以适应帧大小,但实际上Sprite实际上大小相同)?这是我可以通过从.ResizeFill(我当前使用的)更改SKSceneScaleModes来实