Önceki yazımda sabit duran nesneleri çizdirmeyi
göstermiştim. Bu yazımda da aynı sınıfları kullanarak hareketli bir nesne
çizdirmeyi göreceğiz.
Öncelikle nesnemiz hareket edeceği için bir hareket hızı
olması lazım; bunu CizilecekNesne sınıfımıza değişken olarak ekliyoruz.
public Vector2 velocity;
daha sonra; Game1.cs sınıfımıza dönelim;
nesne.velocity = new Vector2(0.0f, 0.5f);
nesne.position = new Vector2(350,
250);
bu şekilde sadece yukarı yönlü bir hız vektörü belirleyelim,
ve nesnemiz için bir pozisyon değeri atayalım.
Daha sonra klavyeden girdi alarak nesnemize hareket verelim.
if (keyboardState.IsKeyDown(Keys.Up))
obje.position -= obje.velocity;
if
(keyboardState.IsKeyDown(Keys.Down))
obje.position
+= obje.velocity;
şeklinde daha önce de anlattığım gibi, kullanıcı girdisi
alarak nesneyi gideceği yöne doğru hareket ettirelim. Birinci deyimde -= işareti
yukarı yönlü bir harekete neden olcaktır çünkü unutmayalım ekranımızda y ekseni
aşağı gittikçe artar. Sonra;
obje.position.Y = MathHelper.Clamp(obje.position.Y,
0, ekranAlanı.Height-obje.sprite.Height);
Diyelim, bu metoda dikkat
Clamp metodu birinci parametresinde verilen değeri alır; ikinci ve üçüncü
parametreler arasında tutar. Eğer değer son iki parametrenin arasında ise
değişmez, eğer birini geçiyorsa geçtiği max veya minimum değere eşitlenir.
Burada nesnemizin Y bileşeni
ancak “0” ve
“Ekran alanı – Nesnenin boyu” arasında
bir değer alabilir. Eğer birini geçerse geçtiği değere eşitlenir. Böylece
nesnemiz sürekli ekranda kalacaktır.
Olay kısaca bu zaten diğer
kısmını önceki yazıda halletmiştik şimdi araya bunları ekleyerek nesnemizi
harekete geçirdik.
Önceki yazıya buradan;
çevre birimlerinden girdi almaya buradan
ulaşabilirsiniz.