2017-01-02 10 views
2

Ich mache ein weiteres schnelles Spiel. Der Boden ist die Wüste. Dieser Boden ist ein Physikkörper (Sprite-Kit) basierend auf seiner Bildtextur. Ich möchte die Höhe des Fußbodens basierend auf einem bestimmten x-Punkt (etwa in der Mitte des Bildschirms) wissen. Wenn ich floor.size.height verwende, erhält es die Höhe, wie es ein Rechteck ist (mit anderen Worten, die maximale Höhe möglich). Ich möchte diesen Y-Punkt bekommen, um den Spieler dazu zu bringen, mit Physikbody weiterzumachen.Get Bildhöhe von x Punkt in Swift

kann mir jemand helfen?

enter image description here

Antwort

1

Sie haben keine Notwendigkeit. Nur weil man die Physik verwenden, es ist einfach unter Angabe den Boden mit isDynamic = false und Spielern mit isDynamic = true und den anderen Parametern, wie zum Beispiel:

enum CollisionTypes: UInt32 { 
    case player1 = 1 
    case player2 = 2 
    case floor = 4 
} 

floor.physicsBody?.categoryBitMask = CollisionTypes.floor.rawValue 
floor.physicsBody?.contactTestBitMask = CollisionTypes.player.rawValue 
floor.physicsBody?.collisionBitMask = 0 

player1.physicsBody?.categoryBitMask = CollisionTypes.player1.rawValue 
player1.physicsBody?.contactTestBitMask = CollisionTypes.floor.rawValue 
player1.physicsBody?.collisionBitMask = CollisionTypes.floor.rawValue 

Dies ist nur ein Punkt zu starten, so zu hoffen, dass es Ihnen hilft.

+0

eigentlich funktioniert die Physik gut auch als Kontakthandhabung ... der Boden ist stabil mit Dynamic false und Spieler bewegen sich mit Dynamic True ... aber wenn ich das benutze: player.run (SKAction.moveBy (x: 10, y: 0, Dauer: 0)) Der Spieler darf sich bergauf in den Boden bewegen –

+0

Sie sollten SKAction.move..with physics nicht benutzen, wenn Sie nicht unerwartetes Verhalten wollen. Verwenden Sie stattdessen den applyImpulse oder ändern Sie die Geschwindigkeit Ihrer Sprites. –

+0

guter Tipp! Vielen Dank! –