Swift üzerinde hareketli bir platform yapmaya çalışıyorum ve oyuncu platformu ile birlikte hareket ettirmek için (physicsBody?.velocity
) 'a çok daha kolay olan self.moveByX()
'u değiştirmem gerekiyordu (ve hem platform hem de oyuncuya biraz sürtünme ekleyin).Swift: Hız için ayarlayın Hız
Yani, böyle bir işlevi yaptı:
self.runAction(
SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock({
print(self.position.x)
self.physicsBody?.velocity = CGVectorMake(20, 0.0)
}),
SKAction.waitForDuration(3),
SKAction.runBlock({
print(self.position.x)
self.physicsBody?.velocity = CGVectorMake(-20, 0.0)
}),
SKAction.waitForDuration(3)
])
)
)
Sorun pozisyonları arasındaki fark tam 60 (20 * 3 sn) olması bekleniyor yani, ama platformun günlükleri alıyorum böyle x
pozisyon:
596.042907714844
544.228393554688
596.048950195312
544.234008789062
596.054565429688
544.116333007812
595.936584472656
544.121887207031
595.942199707031
544.127685546875
595.824584960938
544.009704589844
Yani, pozisyonları arasındaki fark nasıl spec platform hareket yapabilirim şey
52 ~ 51 arasındadır hızını değiştirerek ific ve tam mesafe?Düzenleme: Bu alakalı olup olmadığını bilmiyorum, ama böyle platformun fizik vücudunu belirledik:
self.physicsBody = SKPhysicsBody(rectangleOfSize: self.size)
self.physicsBody?.categoryBitMask = PhysicsCategory.Ground
self.physicsBody?.contactTestBitMask = PhysicsCategory.Player
self.physicsBody?.collisionBitMask = PhysicsCategory.Player
self.physicsBody?.allowsRotation = false
self.physicsBody?.affectedByGravity = false
self.physicsBody?.dynamic = true
self.physicsBody?.friction = 1.0
self.physicsBody?.restitution = 0.0
self.physicsBody?.mass = 99999999999
Bir süredir sprite kitiyle çalışmadım. Ama sanırım tekrar tekrar hızınızı tekrarlıyorsunuz. "SKAction.runBlock" ınızda "self.physicsBody? .velocity" uygulamadan önce hızınızı sıfıra sıfırlamayı deneyin. Yine bu sadece bir tahmin, artık spritekit ile çalışmıyorum. Ancak sürtünme/hız kaybı her iki nesne için de aynı olmayabilir. Sıfırlama hızı onu düzeltebilir. İyi şanslar dostum. –
Evet, ben de denedim, sorun değişmiyor –
Sadece test için, her iki nesneyi aynı boyutta/kütle yapmaya çalıştın mı? Bunu yaptığınızda, sorun ortadan kalkıyor mu? –