2016-07-29 86 views
0

我的游戏是一个sidescroller,所以英雄有恒定的速度,这是设置为他的速度每更新。当我用几个“盒子”形成一个地板时,Hero停止第一个结束和第二个开始的地方。它们具有相同的尺寸并且位于相同的y轴上,为什么会发生这种情况?SpriteKit Hero运动节点扼流节点的连接

PhysicsBody英雄:

 self.physicsBody = SKPhysicsBody(rectangleOfSize: rect.size, center: center) 
     self.physicsBody?.usesPreciseCollisionDetection = true 
     self.physicsBody?.allowsRotation = false 
     self.physicsBody?.restitution = 0 
     self.physicsBody?.categoryBitMask = Category.Hero 
     self.physicsBody?.collisionBitMask = Category.Floor | Category.Hero | Category.Glass | Category.Obstacle 
     self.physicsBody?.contactTestBitMask = Category.Obstacle | Category.Glass | Category.Collision | Category.Doors | Category.EBullet | Category.Enemy | Category.Explosion | Category.Plyuha | Category.Slime 

PhysicsBody的障碍:

self.physicsBody = SKPhysicsBody(rectangleOfSize: size_sprite) 
    self.physicsBody?.usesPreciseCollisionDetection = true 
    self.physicsBody?.restitution = 0 
    self.physicsBody?.allowsRotation = false 
    self.physicsBody?.pinned = true 
    self.physicsBody?.categoryBitMask = Category.Obstacle 
    self.physicsBody?.contactTestBitMask = Category.Bullet | Category.EBullet 
    self.physicsBody?.collisionBitMask = Category.Hero | Category.Bullet | Category.EBullet 
+0

你能发布一些代码吗?你有与英雄和箱子有关的物理机构吗? – claassenApps

+0

@claassenApps我已经更新了我的问题 – EBDOKUM

回答

0

我将创建一个基于边缘的物理体,绵延屏幕的长度来模拟地面。这应该防止玩家停在你的地板边缘,因为这是一个持续的边缘。你可以尝试在玩家面前放置任何障碍物。

设置物理体是这样的:

let startPoint = CGPoint() // fill in the desired x and y for start point 
let endPoint = CGPoint() // fill in the desired x and y for start point 

self.floor.physicsBody = SKPhysicsBody(edgeFromPoint: CGPoint(x: startPoint.x, y: startPoint.y), toPoint: CGPoint(x: endPoint.x, y: endPoint.y)) 

对于可能被停止播放器等障碍,通过展示,其中物理机构实际上是尝试调试。可能有些事情你不希望阻止玩家前进。

在的viewController,把

skView.showsPhysics = true 
+0

我使用类似的解决方案来处理楼层,但是,每当有一个平台时,就会出现问题,在这个平台上代表的楼层不止一种类型的区块,例如,一个陷阱门,它不能被边缘覆盖,因为它必须具有开放功能 – EBDOKUM

+0

我会尝试在游戏运行时显示物理实体,以查看是否有某种意外阻止玩家前进。看到我更新的答案。请注意,只要您正在查看物理实体,就会发生内存泄漏。这是苹果公司的目标,希望尽快解决。当您关闭showPhysics属性时,内存泄漏将消失。 – claassenApps

+0

我已经做到了这一点,显然,英雄的路上没有任何东西,所以,我不知道,必须找出其他的东西。但是,感谢您的努力 – EBDOKUM