CodeBlanks Logo Icon CodeBlanks

Screen shake

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

Player.cs
using UnityEngine;

public class ScreenShakeTester : MonoBehaviour
{
    // Start icinde magnitude tanimla ve yazdir
}

Örnek çözüm

Player.cs
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ü

Soru
transform.localPosition = originalPos + Random.____ * magnitude;
Cevap
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

İleri seviye bölümündeki tüm dersler