Önceki
yazımda nesnelerimizi oyun ekranında 2B olarak temsil etmek için gerekli
olabilecek bazı metotlardan bahsetmiştim. Bu yazımda da bu metotları kullanarak
ekranda bir temsil oluşturmayı anlatmaya çalışacağım.
Öncelikle işin mantığını sıralayalım:
1- Nesnelerimizin
ihtiycı doğrultusunda sınıflar hazırlıyoruz; örneğin durağan bir nesne için
konum ve desen gibi iki değişken yeterli olabilecekken; hareket eden bir nesne
için hız, yön, hareketin başlama konumu gibi özelliklere ihtiyaç duyarız.
2- Sınıflarımızın
yapıcı metotlarında (Constructor) değişkenlerimizi ayarladık,
3- Game1.cs’de
nesnemizi temsil edecek değişkenler oluşturduk.
4- LoadContent()
metodu içinde nesnemize başlangıç değerlerini yükledik.
5- Update()
metodu içinde, nesnemizin etkileşimini sağlayacak işlemleri yaptık. Gerektiğinde
if deyimleri ile nesnemize yeni tepkiler verdirdik. Bu metot saniyede 50-60(değişebilir)
kez tekrarlanacak buna dikkat ettik.
6- Draw()
metodunda spritebatch nesnesinin metotlarıyla çizim işlemini gerçekleştirdik.
Bu da Update metodu gibi saniyede onlarca kez tekrarlanacak.
Not: XNA GS’nin bize hazırladığı
metotların içini doldurmak yerine ufak metotlar tanımlayarak bu kısımların
içinde çağırırsak daha bir güzel olur kodumuz ama bu yazıda buna dikkat
etmeyeceğim, siz edin.
Bu yazımın konusu olarak hareketsiz
nesneleri çizmeyi seçtiğim için ekranda haket etmeyen bir nesne çizeceğiz. Daha
sonra hareket eden nesnenin nasıl çizileceğini ve kullanıcı girişinden nasıl
etkileneceğini yazacağım.
Şimdi yavaş yavaş başlayalım;
1. Adım:
CizilecekNesne.cs:
public Texture2D deseni;
public Vector2 konumu;
şeklinde
bazı nesne özellikleri tanımladık.
2. Adım:
CizilecekNesne.cs:
public CizilecekNesne (Texture2D yüklüDesen)
{
konumu = Vector2.Zero;
deseni = yüklüDesen;
}
3. Adım:
Game1.cs
//arkaplanımız için bu değişkeni tanımladık.
Texture2D
arkaPlan;
//bu değişken de oyunun ekran alanını tutacak.
Rectangle
ekranAlanı;
//nesnemiz
GameObject nesne;
4. Adım:
Game1.cs – LoadContent
methodu:
arkaPlan =
Content.Load<Texture2D>("arkaplan");
//bunun için önceden Content klasörüne bu isimle bir resim koymuş
//olmamız gerekir
nesne = new CizilecekNesne(Content.Load<Texture2D> ("nesneFoto"));
nesne.konumu
= new Vector2(
graphics.GraphicsDevice.Viewport.Width/2,
graphics.GraphicsDevice.Viewport.Height/2);
ekranAlanı = new Rectangle(0,
0,
graphics.GraphicsDevice.Viewport.Width,
graphics.GraphicsDevice.Viewport.Height);
burada arkaplanımızı
nesnemizi ve ekran alanımızın temsillerini hazırladık.
5. Adım:
Game1.cs –
Draw metodu:
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(arkaPlan,
ekranAlanı, Color.White);
/* ekran alanı
büyüklüğünde, arkaPlan desenine sahip bir resmi beyaz ışıkla döşedik.
Dolayısıyla bu bizim arkaPlanımız oldu.*/
spriteBatch.Draw(nesne.deseni,
nesne.konumu, Color.White);
// Burada da nesnemizi ekrana çizdirmiş olduk.
spriteBatch.End();
Böylelikle ekrana nasıl arkaplan deseni verileceğine ve bir nesnenin
nasıl çizdirileceğini görmüş olduk. İlerki yazılarımda hareketli bir nesnenin
çizimini ve hareket ettirilmesini, çarpışmaları anlatmaya çalışacağım. Ama
herşey buradaki gibi basit, değişken tanımla, LoadContent metodunda gerekli
şeyleri yükle, Draw metodunda çiz. Eğer hareket veya etkileşim söz konusu ise
nasıl davranacağına Update metodunda karar ver.
Sonraki yazılarda görüşmek dileğiyle...