Unity'de Video Gözetimi Ekleme
Unity'de bir video gözetim sistemi oluşturmak oyunlarınıza veya simülasyonlarınıza heyecan verici bir derinlik katmanı ekleyebilir. İster gizli bir oyun, ister bir korku deneyimi veya bir güvenlik simülasyonu geliştiriyor olun, bir video gözetim sistemi oyun deneyimini ve oyuna dalmayı geliştirebilir. Bu eğitim, kameralar, render dokuları ve kullanıcı arayüzü öğeleri kullanarak Unity'de işlevsel bir video gözetim sistemi kurma adımlarında size rehberlik edecektir.
Adım 1: Sahneyi Kurma
Video gözetim sistemine başlamadan önce, gözetim kameralarının yerleştirilebileceği temel bir ortam oluşturmamız gerekir. Zaten bir sahneniz varsa, bu adımı atlayabilirsiniz.
Dosya > Yeni Sahne
yolunu izleyerek Unity'de yeni bir 3B sahne oluşturun.- Duvar ve zemin görevi görecek Arazi veya birkaç Küp ekleyin.
- Sahneyi görsel olarak ilgi çekici hale getirmek için sahnenin etrafına 3 boyutlu nesneler yerleştirin ve kameralarla izlenecek alanlar yaratın.
- Sahneye bir Player GameObject ekleyin. Standart Unity varlıklarını veya kendi özel karakter kontrolcünüzü kullanabilirsiniz.
Adım 2: Gözetim Kameraları Ekleme
Bir video gözetim sisteminin çekirdeği, sahneyi yakalayan kameralardır. Birden fazla gözetim kamerası oluşturacağız ve bunları farklı alanları izleyecek şekilde ayarlayacağız.
- Sahneye yeni bir kamera eklemek için Hiyerarşi'e sağ tıklayın ve
Oluştur > Kamera
'i seçin. - Kamerayı izlemek istediğiniz yere yerleştirin. İstediğiniz açıyı elde etmek için kamerayı Sahne Görünümü'de hareket ettirebilir ve döndürebilirsiniz.
- Kameranın adını "SurveillanceCamera1" gibi daha açıklayıcı bir isimle değiştirin.
- Sahnenizin farklı alanlarını kapsayan birden fazla kamera oluşturmak için yukarıdaki adımları tekrarlayın.
- Daha fazla veya daha az alanı kapsayacak şekilde her kameranın Görüş Alanı ve Kırpma Düzlemleri özelliklerini gerektiği gibi ayarlayın.
Adım 3: Kameralar için Render Dokuları Oluşturma
Kameralardan gelen gözetleme yayınını görüntülemek için Render Textures kullanmamız gerekir. Render Textures, Unity'in bir kameranın çıktısını işleyebildiği özel dokulardır ve oyundaki ekranlarda kamera yayınlarını görüntülememizi sağlar.
- Proje penceresindeki Varlıklar klasörüne sağ tıklayın ve
Oluştur > Doku Oluştur
seçeneğini seçin. - Yeni render dokusunun adını "SurveillanceFeed1" olarak değiştirin.
- Render dokusunu seçin ve gerekirse çözünürlüğünü ayarlayın. Daha yüksek çözünürlük daha iyi kalite anlamına gelir ancak performansı etkileyebilir.
- "SurveillanceCamera1"'nin Hedef Doku özelliğini "SurveillanceFeed1"'e atayın. Bu, kameranın görüntüsünü render dokusuna render etmesini sağlayacaktır.
- Her gözetleme kamerası için render dokuları oluşturmak üzere işlemi tekrarlayın.
Adım 4: Kamera Beslemelerini Ekranlarda Görüntüleme
Artık kameralar dokuları işleyebildiğine göre, bu dokuları oyun içi ekranlarda veya kullanıcı arayüzü öğelerinde görüntüleyerek gerçek bir gözetleme sistemini taklit edebiliriz.
Oyun İçi Ekranların Kullanımı
- Sahnenizde Quad veya Plane kullanarak TV veya monitör ekranı görevi görecek bir 3B ekran oluşturun.
- Hiyerarşi'e sağ tıklayın ve
Oluştur > 3B Nesne > Dörtgen
'i seçin. - Quad'ı ekranın olmasını istediğiniz yere yerleştirin.
- Assets klasörüne sağ tıklayıp
Oluştur > Malzeme
'i seçerek yeni bir malzeme oluşturun. Adını "SurveillanceScreen1" koyun. - Malzemenin Shader değerini Unlit/Texture olarak ayarlayın. Bu shader, dokuyu herhangi bir aydınlatma efekti olmadan gösterecektir.
- "SurveillanceFeed1"'ü malzemenin Ana Doku özelliğine atayın.
- "SurveillanceScreen1" malzemesini Quad'a uygulamak için sürükleyin.
- Her kamera yayını için adımları tekrarlayın ve ihtiyaç halinde farklı konumlarda birden fazla ekran oluşturun.
UI Elemanlarını Kullanma
- Hierarchy içerisinde sağ tıklayıp
Create > UI > Canvas
seçeneğini seçerek bir Canvas oluşturun. - Canvas'ın içerisinde, Canvas'a sağ tıklayıp
Oluştur > UI > Raw Image
seçeneğini seçerek Ham Görüntü oluşturun. - Raw Görüntünün boyutunu ve konumunu istediğiniz ekran boyutuna ayarlayın.
- Ham Görüntü için doku olarak "SurveillanceFeed1" atayın.
- Her biri farklı bir kamera beslemesini görüntüleyen birden fazla Raw Görüntü oluşturmak için bu adımları tekrarlayın.
Adım 5: Kamera Beslemeleri Arasında Geçiş Yapma
Daha dinamik bir gözetleme sistemi için oyuncuların farklı kamera yayınları arasında geçiş yapmasına izin vermek isteyebilirsiniz. Bu basit bir betik kullanılarak yapılabilir.
Bir Kamera Değiştirici Komut Dosyası Oluşturun
using UnityEngine;
using UnityEngine.UI;
public class CameraSwitcher : MonoBehaviour
{
public RenderTexture[] cameraFeeds; // Assign RenderTextures in the Inspector
public RawImage displayImage; // Assign the UI Raw Image in the Inspector
private int currentFeedIndex = 0;
void Start()
{
if (cameraFeeds.Length > 0)
{
displayImage.texture = cameraFeeds[currentFeedIndex];
}
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) // Use Space to switch feeds
{
currentFeedIndex = (currentFeedIndex + 1) % cameraFeeds.Length;
displayImage.texture = cameraFeeds[currentFeedIndex];
}
}
}
- CameraSwitcher adında yeni bir C# betiği oluşturun ve yukarıdaki kodu ekleyin.
- Komut dosyasını sahnenizdeki boş bir GameObject'e ekleyin.
- RenderTexture varlıklarını ve Raw Image bileşenini Denetçi'ye atayın.
- Oynat tuşuna basın ve kamera beslemeleri arasında geçiş yapmak için
Boşluk
tuşunu kullanın.
Adım 6: Ek Efektler Ekleme
Gözetleme sisteminizi daha gerçekçi ve ilgi çekici hale getirmek için paraziti simüle eden veya daha fazla derinlik hissi veren statik, gürültü veya katmanlar gibi efektler ekleyebilirsiniz.
Statik Efekt Ekleme
Unity Asset Store'den bir gölgelendirici oluşturun veya bir gölgelendirici varlığı kullanarak statik bir gürültü efekti ekleyin. Bunu gözetleme ekranı materyallerine veya doğrudan kamera beslemelerine Son İşleme efektlerini kullanarak uygulayın.
Kamera Hareketini Simüle Etme
Ayrıca gözetim sistemini daha dinamik hale getirmek için bazı küçük hareketler veya rastgele kamera salınımları da ekleyebilirsiniz. Bunu başarmak için her kameraya bir komut dosyası ekleyin.
public class CameraSway : MonoBehaviour
{
public float swayAmount = 0.5f;
public float swaySpeed = 0.5f;
private Vector3 initialPosition;
void Start()
{
initialPosition = transform.position;
}
void Update()
{
float sway = Mathf.Sin(Time.time * swaySpeed) * swayAmount;
transform.position = initialPosition + new Vector3(0, sway, 0);
}
}
Çözüm
Bu adımları izleyerek, Unity'de çoklu kamera beslemeleri, dinamik ekran geçişleri ve gerçekçi efektlerle tamamlanmış sağlam bir video gözetim sistemi oluşturabilirsiniz. Bu sistem, gizlilik oyunlarından korku maceralarına kadar çeşitli türlerdeki oyun mekaniklerini büyük ölçüde geliştirebilir. Gözetim sistemini oyununuzun benzersiz gereksinimlerine uyacak şekilde uyarlamak için farklı ayarlar ve komut dosyalarıyla denemeler yapın.