【发布时间】:2016-03-06 10:42:24
【问题描述】:
我正在制作一个简单的游戏(使用 Swift 和 SpriteKit),其中有一个可以拖动的圆圈。但是圆圈是不允许穿墙的。
我的碰撞位掩码完美运行,但是当我拖动得足够快时,圆圈最终会穿过墙壁。
Player Sprite 的初始化过程如下:
func initPlayerSprite(){
let playerTexture = SKTexture(imageNamed: "player.png")
let originX = CGRectGetMidX(self.frame)
let originY = CGRectGetMidY(self.frame)
player = SKSpriteNode(texture: playerTexture, size: CGSize(width: 26, height: 26))
player.position = CGPoint(x: originX , y: originY)
player.physicsBody = SKPhysicsBody(circleOfRadius: playerTexture.size().height/2)
player.physicsBody!.dynamic = true
player.physicsBody?.allowsRotation = false
player.physicsBody!.categoryBitMask = ColliderType.Player.rawValue
player.physicsBody!.contactTestBitMask = ColliderType.Floor.rawValue + ColliderType.Gap.rawValue
player.physicsBody!.collisionBitMask = ColliderType.Wall.rawValue + ColliderType.Floor.rawValue
self.addChild(player)
}
我移动 Sprite 的代码如下:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?){
var nodeTouched = SKNode()
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
let dx = -player.position.x + location.x
let dy = -player.position.y + location.y
let movePlayer = SKAction.moveBy(CGVector(dx: dx, dy: dy), duration: 0.02)
}
}
任何想法如何确保碰撞检测即使在高速下也能正常工作?
【问题讨论】:
标签: swift sprite-kit collision-detection