iMedre

SKPhysicsJointFixed, SKPhysicsJointLimit, SKPhysicsJointPin, SKPhysicsJointSliding, SKPhysicsJointSpring Sınıfları Nedir Ve Fonksiyonları Nelerdir? Sprite Kit Derinlikleri #40

Merhaba bu yazıda Sprite Kit Kütüphanesinden sırasıyla SKPhysicsJointFixed, SKPhysicsJointLimit, SKPhysicsJointPin, SKPhysicsJointSliding, SKPhysicsJointSpring sınıfları nedir ve fonksiyonlarını anlatacağım. Keyifli okumalar.

SKPhysicsJointFixed Sınıfı Nedir?

İki fizik bedenini birbirine bağlayan bir eklem.
SKPhysicsJointFixed nesnesi iki fizik gövdesini bir referans noktasında birleştirir. Sabit bağlantılar daha sonra parçalanabilecek karmaşık şekiller oluşturmak için yararlıdır.

SKPhysicsJointFixed Sınıfının Fonksiyonları

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchor: CGPoint)

Yeni bir sabit eklem oluşturur.

SKPhysicsJointLimit Sınıfı Nedir?

İki fizik gövdesi arasında, bir halat ile bağlıymış gibi, maksimum mesafeyi veren bir bağlantı.

SKPhysicsJointLimit Sınıfının Fonksiyonları

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchorA: CGPoint, anchorB: CGPoint)

Yeni bir limit eklemi oluşturur.

var maxLength: CGFloat

Limit eklemiyle bağlı iki fizik gövdesi arasında izin verilen maksimum mesafe.

SKPhysicsJointPin Sınıfı Nedir?

Bağımsız rotasyona izin veren iki fizik bedenini birbirine bağlayan bir eklem.
Bir SKPhysicsJointPin nesnesi, iki fizik gövdesinin, birlikte tutturulmuş gibi çapa noktasının etrafında bağımsız olarak dönmesine izin verir. İki nesnenin ne kadar ileri gidebileceğini ve dönme direncini yapılandırabilirsiniz.

SKPhysicsJointPin Sınıfının Fonksiyonları 

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchor: CGPoint)

Yeni bir pin eklemi oluşturur.

var rotationSpeed: CGFloat

Saniyede radyan cinsinden hız, fizik gövdelerinin pin eklemi etrafında sürüldüğü.

var shouldEnableLimits: Bool

Pin eklemin rotasyonunun belirli bir değerler aralığıyla sınırlı olduğunu gösteren Boole değeri.

var lowerAngleLimit: CGFloat

Radyanda pim eklemi için izin verilen en küçük açı.

var upperAngleLimit: CGFloat

Radyanda pim eklemi için izin verilen en büyük açı.

var frictionTorque: CGFloat

Pim bağlantısının, çapa noktasının etrafında dönmesi için uygulanan direnç.

SKPhysicsJointSliding Sınıfı Nedir?

ki fizik gövdesinin bir eksen boyunca kaymasını sağlayan bir bağlantı.
Bir SKPhysicsJointSliding nesnesi, iki fizik gövdesinin bağlantı noktalarının seçilen bir eksen boyunca kaymasını sağlar. Bağlantı, iki nesnenin eksen boyunca kaymasına izin verilen mesafeyi sınırlayacak şekilde yapılandırılabilir.

SKPhysicsJointSliding Sınıfının Fonksiyonları?

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchor: CGPoint, axis: CGVector)

Yeni bir kayma eklemi oluşturur.

var shouldEnableLimits: Bool

Kayan eklemin kısıtlı olup olmadığını belirten bir Boolean değeri, böylece nesneler sadece başlangıç bağlantı noktasından sınırlı bir mesafeyi kaydırabilir.

var lowerDistanceLimit: CGFloat

Kayan bağlantıya izin verilen en küçük mesafe.

var upperDistanceLimit: CGFloat

Kayan eklem için izin verilen en büyük mesafe.

SKPhysicsJointSpring Sınıfı Nedir?

İki fizik bedenini bağlayan bir yayı simüle eden bir bağlantı.
Bir SKPhysicsJointSpring nesnesi, iki fizik gövdesini bir yay ile birbirine bağlamayı simüle eder. İki nesne birbirinden uzaklaştıkça, iki cismi tekrar bir araya getirmek için daha fazla kuvvet uygulanır.

Liste 1, sprite düğümleri arasında nasıl bir yaylı bağlantı oluşturabileceğinizi gösterir. StatikNode’un fizik gövdesi, islevsel etkiden etkilenmesini engelleyen isDynamic özelliğine sahiptir. Yukarı doğru hareket ettirmek için bir SKAction ile canlandırılmıştır.

dynamicNode, bir 0,5 frekansı ve 0,2’lik bir sönüm ile bir SKPhysicsJointSpring adlı yayın ile staticNode’a birleştirilir.

Son sonuç, staticNode’un dikey olarak hareket etmesiyle, dynamicNode’un küçük bir gecikme ve sıçrama ile yukarı yönlü yolu izlemesidir.

let scene = SKScene()
 
let size = CGSize(width: 50, height: 50)
 
let staticNode = SKSpriteNode(color: .red,
                              size: size)
let dynamicNode = SKSpriteNode(color: .blue,
                               size: size)
 
staticNode.physicsBody = SKPhysicsBody(rectangleOf: size)
staticNode.physicsBody?.isDynamic = false
staticNode.position = CGPoint(x: 250, y: 300)
 
dynamicNode.physicsBody = SKPhysicsBody(rectangleOf: size)
dynamicNode.position = CGPoint(x: 250, y: 200)
 
scene.addChild(staticNode)
scene.addChild(dynamicNode)
 
let spring = SKPhysicsJointSpring.joint(withBodyA: staticNode.physicsBody!,
                                        bodyB: dynamicNode.physicsBody!,
                                        anchorA: staticNode.position,
                                        anchorB: dynamicNode.position)
 
spring.frequency = 0.5
spring.damping = 0.2
 
scene.physicsWorld.add(spring)
 
let move = SKAction.moveBy(x:0, y: 200,
                           duration: 1)
staticNode.run(move)

SKPhysicsJointSpring Sınıfının Fonksiyonları

class func joint(withBodyA: SKPhysicsBody, bodyB: SKPhysicsBody, anchorA: CGPoint, anchorB: CGPoint)

Yeni bir yaylı eklem oluşturur.

var damping: CGFloat

Sürtünme kuvvetlerinden dolayı yay hareketinin nasıl sönümleneceğini tanımlar.

var frequency: CGFloat

Yayın frekans veya sertlik özelliklerini tanımlar.

 

Erdem Özgür

Yorum Ekle

Bizleri Sosyal Medyadan Takip Edebilirsiniz

Utanmana gerek yok, bizimle iletişim kurabilirsin. İnsanlarla tanışmayı ve yeni arkadaşlar edinmeyi seviyoruz.