2016-03-31 13 views
0

SKSpriteNode'un belirli bir y noktasında nasıl kilitleneceğini anlamaya çalışıyorum. Parmağım ekrana dokunduğunda, dokunduğum noktada görüntülenen düğüm.Swift Spritekit. Belirli bir noktadaki bir düğümü nasıl kilitleyebilirim?

if isMovable == false { 
    isMovable = true 
    for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = location 
    } 
} 

Ve sonra, sadece x noktasını elde etmek yerine sırayla bu kod satırları yazdı: Ancak

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location, self.frame.height/2 - 200) 
} 

, içeride TouchesBegan yöntem, ben olan kod satırlarını yazdı Bunun nedeni Elde ettiğim sonuç, bu konumun kullanılamamasıydı çünkü CGPoint, CGFloat değil. CGFloat(location)'u kullanmaya çalıştım ama boşver. Bir y noktasında bir düğüm kilitlemek için herhangi bir yolu var mı?

İstediğim istenen işlev, ekranda herhangi bir noktaya dokunduğumda, bir noktanın kilitli olması, yani bir düğümün yalnızca yatay olarak hareket edebilen, ancak dikey olarak hareket ettirilemediği anlamına gelir.

İngilizcem yeterince iyi olmadığından, sorunumu daha net bir şekilde anlamanıza olanak tanıyan bir açıklama eksikliğim olabilir. Beni anladıysan ve bana çözümü verirsen sevinirim. Şimdiden teşekkürler.

cevap

0

Kişisel location değişkendir tip CGPoint sahiptir:

iki boyutlu bir koordinat sistemindeki bir noktasını içeren bir yapı. Apple Documentation

Yani x pozisyon almak için aynı değişken location kullanabilir ve seçtiğiniz herhangi bir nokta için y kilitlemek olabilir: cevap için

for touch in touches { 
    let location = touch.locationInNode(self) 
    ship.position = CGPointMake(location.x, self.frame.height/2 - 200) 
} 
+0

Teşekkür ve iyi işe yaradı. Ancak, aradığım şey bu değildi. Ekrana dokunduktan sonra, bir düğüm tam olarak programlandığı gibi bir x nokta ve y noktasına yerleştirilir. Sorun, ikinci bir dokunuştan sonra, düğüm hareket eder ve ilk göründüğü yerde kalmaz. Sistem çalışırken o düğümün sonsuza kadar orada olmasını istiyorum. Bunu nasıl yapabilirim? – bagels

+0

@ryohei Peki bir çift çözümünüz var. Bunlardan biri, doğrudan "touchesBegan" yönteminde sprite oluşturuyor. Hareketli grafiğinizi oluşturup konumunuzu dokunmatik konumunuza atarsınız. –

İlgili konular