Screen shake
- Oyun Geliştirme kursu
- İleri seviye
- Ders 62/71
- 4 dk
Kamera sarsıntısı ile etki hissi yaratmayı öğrenirsin.
Screen Shake (Kamera Sarsıntısı)
Patlamalar, ağır darbeler veya kritik vuruşlar anında kamerayı kısa süreliğine titretmek (Screen Shake) darbenin şiddetini oyuncuya doğrudan aktarır.
// Kamera pozisyonuna rastgele kure ici sapma ekleme
Vector3 shakeOffset = Random.insideUnitSphere * shakeMagnitude;Random.insideUnitSphere fonksiyonu kamera merkezine rastgele yönlerde hızlı sapmalar ekleyerek organik bir sarsıntı üretir.
Sarsıntı Süresi ve Coroutine
Kamera sarsıntısı anlık başlayıp yumuşak bir şekilde sönümlenmelidir. Bunun için bir Coroutine kullanılarak belirlenen süre (duration) boyunca titreşim uygulanır ve bitince orijinal konuma dönülür.
IEnumerator Shake(float duration, float magnitude) {
Vector3 originalPos = transform.localPosition;
float elapsed = 0f;
while (elapsed < duration) {
transform.localPosition = originalPos + Random.insideUnitSphere * magnitude;
elapsed += Time.deltaTime;
yield return null;
}
transform.localPosition = originalPos;
}Bu geçici yer değiştirme ana kamera pozisyonunu bozmadan dinamik bir etki sunar.
Uygulama Kamera sarsıntı şiddeti testi
Bir Start metodu tanımla. İçinde float magnitude = 0.3f; tanımla ve konsola "Sarsinti siddeti: " + magnitude yazdır.
Başlangıç kodu
using UnityEngine;
public class ScreenShakeTester : MonoBehaviour
{
// Start icinde magnitude tanimla ve yazdir
}Örnek çözüm
using UnityEngine;
public class ScreenShakeTester : MonoBehaviour
{
void Start()
{
float magnitude = 0.3f;
Debug.Log("Sarsinti siddeti: " + magnitude);
}
}Beklenen çıktı
Sarsinti siddeti: 0.3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kamera sarsıntısı (Screen Shake) efektinde kameraya titreşim hissi vermek için hangi rastgele vektör üreticisi sıkça kullanılır?
- Vector3.one
- Quaternion.identity
- Random.insideUnitSphere Doğru cevap
- Vector3.zero
Açıklama: Random.insideUnitSphere, yarıçapı 1 olan bir küre içinde rastgele 3D vektör üreterek kamerayı her karede sarsmak için idealdir.
2 Rastgele sapma vektörü
transform.localPosition = originalPos + Random.____ * magnitude;
transform.localPosition = originalPos + Random.insideUnitSphere * magnitude;
Açıklama: Kamera sarsıntısında küresel rastgele sapma için 'Random.insideUnitSphere' kullanılır.
3 Kamera sarsıntı terimleri
| Kavram | Anlamı |
|---|---|
Screen Shake |
Darbe anında kamerayı sarsma efekti |
magnitude |
Sarsıntının genliği ve şiddeti |
duration |
Sarsıntının devam ettiği saniye süresi |
originalPos |
Sarsıntı bitince dönülen orijinal konum |