Videobewaking toevoegen in Unity

Het maken van een videobewakingssysteem in Unity kan een spannende laag diepte toevoegen aan uw games of simulaties. Of u nu een stealth-game, een horrorervaring of een beveiligingssimulatie ontwikkelt, een videobewakingssysteem kan de gameplay en immersie verbeteren. Deze tutorial leidt u door de stappen om een ​​functioneel videobewakingssysteem in Unity op te zetten met behulp van camera's, rendertexturen en UI-elementen.

Stap 1: De scène opzetten

Voordat we beginnen met het videobewakingssysteem, moeten we een basisomgeving creëren waar de bewakingscamera's kunnen worden geplaatst. Als u al een scène hebt, kunt u deze stap overslaan.

  1. Maak een nieuwe 3D-scène in Unity door naar Bestand > Nieuwe scène te gaan.
  2. Voeg een Terrein of een paar Kubussen toe om als muren en vloeren te dienen.
  3. Plaats een aantal 3D-objecten rondom de scène om deze visueel interessanter te maken en creëer gebieden die u met de camera's in de gaten kunt houden.
  4. Voeg een Player GameObject toe aan de scène. U kunt de standaard Unity assets of uw eigen aangepaste character controller gebruiken.

Stap 2: Bewakingscamera's toevoegen

De kern van een videobewakingssysteem zijn de camera's die de scène vastleggen. We maken meerdere bewakingscamera's en stellen ze in om verschillende gebieden te bewaken.

  1. Klik met de rechtermuisknop in de Hiërarchie en selecteer Maken > Camera om een ​​nieuwe camera aan de scène toe te voegen.
  2. Plaats de camera op een locatie waar u wilt dat deze monitort. U kunt de camera in de Scene View verplaatsen en draaien om de gewenste hoek te krijgen.
  3. Geef de camera een beschrijvende naam, bijvoorbeeld "SurveillanceCamera1".
  4. Herhaal de bovenstaande stappen om meerdere camera's te maken die verschillende delen van uw scène bestrijken.
  5. Pas de eigenschappen Gezichtsveld en Clipping Planes van elke camera aan, indien nodig, om meer of minder gebied te bestrijken.

Stap 3: Rendertexturen voor camera's maken

Om de bewakingsbeelden van de camera's weer te geven, moeten we Render Textures gebruiken. Render Textures zijn speciale texturen waarop Unity de uitvoer van een camera kan renderen, waardoor we camerafeeds op schermen in de game kunnen weergeven.

  1. Klik met de rechtermuisknop op de map Assets in het venster Project en selecteer Maken > Textuur renderen.
  2. Hernoem de nieuwe rendertextuur naar "SurveillanceFeed1".
  3. Selecteer de rendertextuur en pas indien nodig de resolutie aan. Een hogere resolutie betekent een betere kwaliteit, maar kan de prestaties beïnvloeden.
  4. Wijs de Target Texture eigenschap van "SurveillanceCamera1" toe aan "SurveillanceFeed1". Dit zorgt ervoor dat de camera zijn weergave rendert naar de render texture.
  5. Herhaal het proces om rendertexturen voor elke bewakingscamera te maken.

Stap 4: De camerafeeds op schermen weergeven

Nu de camera's texturen weergeven, kunnen we deze texturen weergeven op schermen in de game of op UI-elementen, zodat ze een echt bewakingssysteem nabootsen.

In-game schermen gebruiken

  1. Maak een 3D-scherm in uw scène met behulp van een Quad of een Plane, die als tv- of monitorscherm kan dienen.
  2. Klik met de rechtermuisknop in de Hiërarchie en selecteer Maken > 3D-object > Quad.
  3. Plaats de Quad op de plek waar u het scherm wilt hebben.
  4. Maak een nieuw materiaal door met de rechtermuisknop te klikken in de map Assets en Create > Material te selecteren. Noem het "SurveillanceScreen1".
  5. Stel de Shader van het materiaal in op Unlit/Texture. Deze shader geeft de textuur weer zonder lichteffecten.
  6. Wijs "SurveillanceFeed1" toe aan de eigenschap Hoofdtextuur van het materiaal.
  7. Sleep het materiaal "SurveillanceScreen1" naar de Quad om het toe te passen.
  8. Herhaal de stappen voor elke camerafeed en maak indien nodig meerdere schermen op verschillende locaties.

UI-elementen gebruiken

  1. Maak een Canvas in de Hiërarchie door met de rechtermuisknop te klikken en Maken > UI > Canvas te selecteren.
  2. Maak in het canvas een Raw Image door met de rechtermuisknop op het canvas te klikken en Create > UI > Raw Image te selecteren.
  3. Pas de grootte en positie van de Raw-afbeelding aan op het gewenste schermformaat.
  4. Wijs "SurveillanceFeed1" toe als textuur voor de Raw-afbeelding.
  5. Herhaal deze stappen om meerdere Raw-afbeeldingen te maken, waarbij elke afbeelding een andere camerafeed weergeeft.

Stap 5: Schakelen tussen camerafeeds

Voor een dynamischer bewakingssysteem wilt u spelers misschien laten wisselen tussen verschillende camerafeeds. Dit kan met een eenvoudig script.

Maak een cameraswitcherscript

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];
        }
    }
}
  1. Maak een nieuw C#-script met de naam CameraSwitcher en voeg de bovenstaande code toe.
  2. Koppel het script aan een leeg GameObject in uw scène.
  3. Wijs de RenderTexture-assets en het Raw Image-component toe in de Inspector.
  4. Druk op Afspelen en gebruik de Spatie-toets om te schakelen tussen camerafeeds.

Stap 6: Extra effecten toevoegen

Om uw bewakingssysteem realistischer en aantrekkelijker te maken, kunt u effecten zoals ruis, ruis of overlays toevoegen om interferentie te simuleren of de immersie te vergroten.

Statisch effect toevoegen

Maak een shader of gebruik een shader-asset van de Unity Asset Store om een ​​statisch ruiseffect toe te voegen. Pas het toe op de materialen van het bewakingsscherm of rechtstreeks op de camerafeeds met Post-Processing-effecten.

Simuleren van camerabeweging

U kunt ook wat kleine bewegingen of willekeurige camerabewegingen toevoegen om het bewakingssysteem dynamischer te maken. Voeg een script toe aan elke camera om dit te bereiken.

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);
    }
}

Conclusie

Door deze stappen te volgen, kunt u een robuust videobewakingssysteem in Unity maken, compleet met meerdere camerafeeds, dynamische schermwisseling en realistische effecten. Dit systeem kan de gameplay-mechanica in verschillende genres, van stealth-games tot horroravonturen, enorm verbeteren. Experimenteer met verschillende instellingen en scripts om het bewakingssysteem aan te passen aan de unieke vereisten van uw game.