2016-03-29 18 views
-4

İki sarı pacman (bir açık ağız ve bir düz) ve aynı zamanda bir hayalet yapmaya çalışıyorum ama openGL ile oldukça kötüyüm.Pacman'ın Karakterlerini OpenGL'de Nasıl Oluştururuz

Birisi bunları yapmak için bana kod verebilir mi?

+1

SO'nun nasıl çalıştığını anlamak için lütfen bir "[Tur] (http://stackoverflow.com/tour)" gönderin. "Bana bir şeye çözüm ver" gibi sorular büyük olasılıkla cevaplanmamıştır. Lütfen bize şimdiye kadar denediğiniz şeyi gösterin ve sorununuzu belirtin. – Peter

+0

Cevabınız için teşekkürler Peter. Birisinin bu karakterleri zaten yapıp yapmadığını ve bana verebileceğini sorardım. Ben kendim yapmak için openGL ile çok kötü maalesef yaşıyorum. –

cevap

3

OpenGL, yalnızca bir şeyler çizmenin bir yoludur. Ne çizmek istediğini bulmalısın. Bir pacman oldukça basit bir şekil olsa da: sadece dolu bir ark.

Üçgenin nasıl çizileceğini zaten biliyorsunuzdur. Eğer yeterli üçgenler içine bölerseniz

circle with triangles

, ekranda tamamen pürüzsüz görünecektir: Bir daire esasen ortak bir orta nokta ile üçgenler kümesidir. Optimum sayı, pacman'ın boyutuna bağlı olarak değişecektir.

Şimdi "ağız" yapmak için, bazı köşeleri tek bir yerden temizleyin. Bir Pacman'in ağzı hareket ediyor yönünde hizalanmıştır karakteristik açıklığı oluşturur ve "her iki ucunda" açılır: basit bir döngü (yalancı kod) kullanılarak üçgenler çizmek varsayarak Şimdi

pacman shape

:

for (i : (0, 360)) { 
    rotate(i /* degrees */); // ---------- see remark 1. 
    drawTriangle(); 
} 
sadece iki ucundan gelen yarı yarıya bölünmüş geçerli genişliğini çıkarmak gerekir açılış animasyonu yapmak için (bak zor değil!):

mouthOpenPercentage = 0.5; // varies from 0 to 1 
fullyOpenMouthSize = 0.1; // 10% of the circle, so around 36 deg 
numberOfSegments = 360; 
mouthOpenSegments = fullyOpenMouthSize * mouthOpenPercentage * numberOfSegments/2; 

for (i : (mouthOpenSegments, numberOfSegments - mouthOpenSegments)) { 
    rotate(i /* degrees */); 
    drawTriangle(); 
} 

Eğer çıkarsa, örn. Sağ üstüne değil, sadece istediğiniz açıya göre istediğiniz noktaya "nokta" getirin.


1. Ben rotate "mutlak rotasyon" anlamına geldiğini varsaydık. Bunu akılda tut.

+0

Cevabınız için çok teşekkürler Bartek. Ne yazık ki openGL ile basit bir daire çizmek benim için oldukça zor .. –

+0

@ b.allain732 Sonra belki temel bilgi ve trigonometri hakkında bazı kaynaklar bulmaya çalışın, çünkü temel bilgisi olmadan ilerlemeniz zor olacaktır. –

İlgili konular