2
我做一個簡單的遊戲(使用雨燕& SpriteKit),在那裏我有就是可以被拖到了一圈。但圓圈不允許穿過牆壁。Swift 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)
}
我對移動雪碧代碼是這樣的:
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)
}
}
任何想法如何確保碰撞檢測工作,即使在高速度?
完美的,這解決了我的問題!謝謝!至於碰撞Bitmask,我應該把它改成「|」而不是「+」。這只是一個與UInt32匹配的實驗,而據我測試..它令人驚訝的工程! –
不客氣,快樂編碼 – crashoverride777
我試過這個,但它沒有幫助我。所以我創造了一個不同的方式來做到這一點。點擊[這裏](https://stackoverflow.com/a/47575444/1259775)來查看它 – aytek