Ich mache mein erstes Spiel, auf dem Bild ist der Spieler einer der Rand eines Blocks, die linke Seite des Blocks ist leicht gebogen und die rechte ist gerade (I weiß nicht, ob das wichtig ist - aber scheint einen Unterschied zu machenSprite Kit (swift) Knoten Reibung - Bildschirm springen
Wenn die Ebene ganz links ist, springt der Bildschirm auf und ab, als wäre der Spieler verwirrt, an welchen Teil des Blocks er angehängt ist .
Ich versuche zu bewegen, aber der Spieler ist fest (es sei denn, ich springe) dies geschieht auch auf der rechten Seite des Blocks, aber der Bildschirm springt nicht wie rechts (muss die Kurve sein?).
Ich nehme an, dass es etwas mit Reibung zu tun hat, aber die Reibung für den Block wird als Null gesetzt.
Wie behebe ich das? Hier
ist die Klasse für den Block:
import SpriteKit
class Tile: SKSpriteNode
{
var textureAtlas:SKTextureAtlas = SKTextureAtlas(named:"Tiles.atlas")
func spawn(parentNode:SKNode, position:CGPoint, size:CGSize = CGSize(width: 48, height: 48), texture_id: Int = 1)
{
parentNode.addChild(self)
self.size = size
self.position = position
self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSize(width: self.size.width, height: self.size.height))
self.physicsBody?.affectedByGravity = false;
self.physicsBody?.dynamic=false
//self.physicsBody?.friction = 0
self.texture = textureAtlas.textureNamed("\(texture_id).png");
if texture_id == 17 {
//self.physicsBody?.friction = 0;
self.physicsBody?.categoryBitMask = PhysicsCategory.ground.rawValue
}
}
Dies ist ein Teil der Klasse für den Spieler:
self.physicsBody?.linearDamping = 1.0
self.physicsBody?.mass = 84
self.physicsBody?.allowsRotation = false
self.physicsBody?.categoryBitMask = PhysicsCategory.penguin.rawValue
self.physicsBody?.contactTestBitMask = PhysicsCategory.enemy.rawValue
Dank.
Was passiert, wenn Sie Dämpfung ausschalten und die Masse Eigenschaft entfernen? Ich würde dort anfangen und sehen, ob dein Ergebnis besser ist. – mfessenden
Ich habe diese entfernt - er fliegt jetzt in die Luft, wenn ich spring! - Also gibt es keine speziellen Funktionen, um das zu beheben? Ich muss nur mit den Zahlen rumspielen? – garyconstable
Ich würde die 'physicsBody.applyImpulse' -Eigenschaft verwenden, um ein positives Y-Delta anzuwenden und seine' physicsBody.dynamic' -Eigenschaft auf true zu setzen. – mfessenden