我正在尝试使用Spritekit和Swift编写一个iOS游戏,这是我关于stackoverflow的第一个问题:)为了简化我的问题和我的约束,假设我有两个高度相同的矩形SKShapeNodes(我的关卡),它们完全并排,具有物理实体但非动态。英雄只是一个方形的SKShapeNode,具有动态物理体,可以在这些矩形的顶部移动。玩家使用加速度计移动英雄。我不确定为什么,但有时,当英雄沿着矩形的顶部滑动时,它会立即停在两个矩形之间的缝隙处,或者似乎被这个缝隙绊倒(小跳过去):(((移动应该是平滑的。是否有一种变通方法可以使两个矩形之间的表面更“平坦”/更平滑,因为我知道我不能为了游戏目的而
我尝试模拟不同类型球(足球、网球、高尔夫、Volley等)的行为。为了这些目的,我试图改变物理体的密度、质量、尺寸参数。在我的游戏中它没有效果,我试图在非常简单的应用程序中模拟它,包括球和Racket无论质量、密度、大小如何,球总是以相同的速度上升到相同的高度这是因为恢复原状等于1吗?如何以这种方式模拟不同球类型的行为? 最佳答案 您需要更改恢复属性以及Lin。阻尼和昂。每个球的阻尼以我为例网球-静止0.6线0.2角0.2足球-休息。0.5林0.3角0.2高尔夫球-静止0.8lin0.3ang0.3铅球-休息0.1lin0.1ang
我在尝试使用Swift和SpriteKit在Xcode6beta7中编写一个flappybirdsclone时遇到以下问题。将physicsBody属性添加到SKSpriteNode后,我无法直接更改physicsBody的属性,例如我无法执行以下操作:bird=SKSpriteNode(texture:birdTexture1)bird.position=CGPoint(x:self.frame.size.width/2.8,y:CGRectGetMidY(self.frame))bird.runAction(flight)bird.physicsBody=SKPhysicsBody
我创建了一个SKSpriteNode的子类。我将该类的实例与SKPhysicsJointLimit类型的关节连接在一起。我在GameScene的didEndContact(contact:SKPhysicsContact)中执行此操作:varjoint=SKPhysicsJointLimit.jointWithBodyA(contact.bodyA,bodyB:contact.bodyB,anchorA:pos1!,anchorB:pos2!)self.physicsWorld.addJoint(joint)目前效果很好。然后我到了要从关节释放节点的地步。AccordingtotheS
下面是我的“Floor.swift”类,下面基本上是一堆墙。我有来自屏幕顶部的对象,一旦Floor和SKSpriteNodes发生碰撞,我希望SKSpriteNode被移除。下面是我的Floor类。importFoundationimportSpriteKitclassFloor:SKNode{overrideinit(){super.init()letleftWall=SKSpriteNode(color:UIColor.clear,size:CGSize(width:5,height:50))leftWall.position=CGPoint(x:0,y:50)leftWall.p
Apple在SKPhysicsBody类中有以下方法。/*ReturnsanarrayofallSKPhysicsBodiescurrentlyincontactwiththisone*/funcallContactedBodies()->[AnyObject]!我注意到它返回一个AnyObject数组。所以我读到了如何处理向下转换AnyObjectHere我想遍历物理体的allContactedBodies数组。问题是,无论我尝试什么,我都无法正常工作。我首先尝试了这个:forbodyinself.physicsBody.allContactedBodies()as[SKPhysic
我有一个不那么简单的简单switch语句。switch(bubble?.name){//bubbleisSKPhysicsBodycase"largeBubble"://这里我得到了我在标题Binaryoperator'~='cannotbeappliedtooperandsoftype'String'and'String?'中提到的错误。我不知道为什么其中一个是可选的是个问题。 最佳答案 因为OptionalChaining,bubble?.name的类型为String?。您有几个选择:在您的case表达式中使用"largeBub
我正在考虑用我的英雄在我的spriteKit游戏中为iOs收集元素的最佳方法,在尝试了几种方法之后,我的结论是最好的方法是让一个元素带有可以检测碰撞但不与我的英雄碰撞的物理体。有可能做到吗?停用物理体的碰撞而不停用其检测碰撞的能力??我知道这听起来有点矛盾……因为,另一种方法是只创建一个没有物理body的SKSpriteNode,这样就不会发生碰撞,但是“检测”碰撞的方法将是手工制作的,而且更难,因为我需要在我的英雄中设置坐标系检测,当他处于那些特定坐标(在项目上方)时,我会让项目消失。知道如何更轻松地执行这两种方法中的任何一种吗? 最佳答案
我正在考虑用我的英雄在我的spriteKit游戏中为iOs收集元素的最佳方法,在尝试了几种方法之后,我的结论是最好的方法是让一个元素带有可以检测碰撞但不与我的英雄碰撞的物理体。有可能做到吗?停用物理体的碰撞而不停用其检测碰撞的能力??我知道这听起来有点矛盾……因为,另一种方法是只创建一个没有物理body的SKSpriteNode,这样就不会发生碰撞,但是“检测”碰撞的方法将是手工制作的,而且更难,因为我需要在我的英雄中设置坐标系检测,当他处于那些特定坐标(在项目上方)时,我会让项目消失。知道如何更轻松地执行这两种方法中的任何一种吗? 最佳答案
我正在尝试使用SpriteKit设置一些弹性碰撞。正如我在SpriteKitPhysicsCollisionIssue中询问的那样,多个物体相互靠近的情况存在问题。我对发生碰撞的时间感到困惑。我尝试在-didBeginContact:委托(delegate)方法中将dynamic设置为NO,计算最终速度,然后在-didEndContact:将dynamic设置为YES,然后正确设置速度。我希望它在碰撞之外保持动态的原因是因为我希望摩擦力/重力等可用。顺序/逻辑有什么问题?我查看了-didSimulatePhysics方法,但它似乎不是可行的方法。 最佳答案