2010-11-22 7 views
1

Oyun topluluğumun (cocos2d) var, bir top bir topla vurulacak, bu top bir yolun içinden geçecek ve bir binaya iniş. Şimdi sorun şu ki, bina imajımın ilk bakışta görünmemesi ve top gezmesi ile arka plan görüntüsünün boyutunu arttırmak zorundayım. Arka plan resmini sürüklemek zorundayım. top Bu konuda bana yardımcı olabilir. Soru biraz daha netleştirmek için ben de bir görüntü ekliyorum. Şimdiden teşekkürler.Arka zemin ekranının yanısıra Iphone Game oyunlarında bir topun trajedi yolunun bakımının yapılması

cevap

2

Sizin neyiniz birbirinden bağımsız olması gereken iki farklı koordinat alanıdır. Top, "ekran" koordinat uzayından bağımsız olarak "dünya" koordinat alanında hareket etmelidir. Elbette "dünya" nın "ekran" üzerinde gösterilmesi gerekir, bu yüzden "dünya" koordinat uzayını "ekran" koordinat uzayına dönüştürmelisiniz; bu durumda, bir ofset ekleyerek yapılabilecek basit bir çeviri.

iPhone'da, tüm "dünya nesnelerini" UIView içine koyabiliyorsunuz ve bu 'UIView'yi sol ve sağa taşıyabiliyorsunuz, bu arada dünya nesneleri bu görünümün içindeki "dünyaya" ve " Ekranda çizildiğinde dünya koordinat alanı "(koordinat alanı) ekran koordinat alanı sizin için yapılacaktır.

+0

bu konuda net değilim. Breifly'yi açıklayabilir misiniz? Koordinat uzayının ne olduğunu anlamıyorum. Burada uiview kullanmıyorum bu bir cocos2d oyun uygulaması. – Sri

+0

Yani iki koordinat sisteminiz var. Bağımsız olması gereken iki koordinat kaynağı. Topun pozisyonu daima "dünya" kökenlidir. "Dünya" nın konumu "ekran" kaynağına göre hareket ettirilebilir. – filipe

3

Cocos2d'de bunu gerçekleştirmenin en kolay yolu, tüm katmanınızı taşımaktır. Normal cocos2d yolunda şeyler yapıyorsanız, CCLayer alt sınıflarını içeren bir sınıfa sahip olursunuz.

Bu sınıfta sadece konumunu değiştirebilir ve istenen etkiyi elde edersiniz.

Örneğinizde, "kamerayı" sağa doğru taşımak istediğinizde, yalnızca katmanı sola taşıyabilirsiniz. örneğin:

-(void) centerOnBuilding { 
    CGPoint distanceToMove = ccp(-120, 0); 
    self.position = ccpAdd(distanceToMove, self.position); 
} 

Bu işlev, bir CCLayer içinde, kaldığı yere sağ tarafında bulunan kamera 120 piksel ortalama etkisine sahiptir. Kaydırma efektine sahip olmak istiyorsanız, aynı şeyi yapın, ancak katmanda bir MoveTo veya MoveBy eylemi çalıştırın.

İlgili konular