Unity implementeert voetstapgeluiden

In deze tutorial onderzoeken we hoe we voetstapgeluiden in Unity kunnen implementeren met behulp van een eenvoudig voorbeeldscript. Voetstapgeluiden voegen realisme en onderdompeling toe aan het spel door audiofeedback te geven op de bewegingen van de speler. Dit artikel laat een voorbeeld zien van hoe je willekeurige voetstapgeluiden op een bepaalde frequentie kunt afspelen terwijl de speler loopt. We bespreken de noodzakelijke instellingen, scripting en triggermechanismen om dit effect te bereiken. Dus laten we erin duiken en het spel tot leven brengen met realistische voetstapgeluiden!

Bereid de geluidsactiva voor

  • Bereid de voetstapgeluiden (bijvoorbeeld loopgeluiden) voor in een geschikt audioformaat (bijvoorbeeld WAV of MP3).
  • Importeer de geluidsitems in het Unity-project.

Maak een leeg spelobject

  • Maak in de Unity Editor een leeg spelobject dat zal dienen als container voor de logica van het voetstapgeluid. Laten we het een naam geven "FootstepManager."
  • Bevestig een 'AudioSource'-component aan het "FootstepManager"-spelobject. Dit onderdeel is verantwoordelijk voor het spelen van de voetstapgeluiden.

Schrijf het voetstapscript

  • Maak een nieuw C#-script met de naam "FootstepController" en koppel dit aan het "FootstepManager"-spelobject.
  • Open het "FootstepController"-script en schrijf de volgende code:

FootstepController.cs

using UnityEngine;

public class FootstepController : MonoBehaviour
{
    public AudioClip[] footstepSounds; // Array to hold footstep sound clips
    public float minTimeBetweenFootsteps = 0.3f; // Minimum time between footstep sounds
    public float maxTimeBetweenFootsteps = 0.6f; // Maximum time between footstep sounds

    private AudioSource audioSource; // Reference to the Audio Source component
    private bool isWalking = false; // Flag to track if the player is walking
    private float timeSinceLastFootstep; // Time since the last footstep sound

    private void Awake()
    {
        audioSource = GetComponent<AudioSource>(); // Get the Audio Source component
    }

    private void Update()
    {
        // Check if the player is walking
        if (isWalking)
        {
            // Check if enough time has passed to play the next footstep sound
            if (Time.time - timeSinceLastFootstep >= Random.Range(minTimeBetweenFootsteps, maxTimeBetweenFootsteps))
            {
                // Play a random footstep sound from the array
                AudioClip footstepSound = footstepSounds[Random.Range(0, footstepSounds.Length)];
                audioSource.PlayOneShot(footstepSound);

                timeSinceLastFootstep = Time.time; // Update the time since the last footstep sound
            }
        }
    }

    // Call this method when the player starts walking
    public void StartWalking()
    {
        isWalking = true;
    }

    // Call this method when the player stops walking
    public void StopWalking()
    {
        isWalking = false;
    }
}

Voetstapgeluiden toewijzen

  • Selecteer in de Unity-editor het "FootstepManager"-spelobject.
  • Wijs in het infovenster de voetstapgeluidsfragmenten toe aan het arrayveld "Footstep Sounds" van het "Footstep Controller"-script. Sleep de voetstapgeluiden naar de array-slots.

Activeer voetstapgeluiden

  • Ga in het script spelerbeweging of een ander relevant script naar de component "FootstepController" en roep de methoden 'StartWalking()' en 'StopWalking()' aan op basis van de beweging van de speler.
  • Als u bijvoorbeeld aanneemt dat het spelersbewegingsscript "PlayerMovement" heet, wijzigt u dit als volgt:

PlayerMovement.cs

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    private FootstepController footstepController;

    private void Awake()
    {
        footstepController = GetComponentInChildren<FootstepController>(); // Get the FootstepController component
    }

    private void Update()
    {
        // Player movement code here

        // Check if the player is walking or not and call the appropriate methods
        if (isWalking)
        {
            footstepController.StartWalking();
        }
        else
        {
            footstepController.StopWalking();
        }
    }
}

Met de bovenstaande implementatie worden de voetstapgeluiden met willekeurige intervallen binnen het opgegeven frequentiebereik afgespeeld wanneer de speler loopt. Vergeet niet de variabelen 'minTimeBetweenFootsteps' en 'maxTimeBetweenFootsteps' aan te passen om de frequentie van voetstapgeluiden te regelen.

Zorg ervoor dat je het "PlayerMovement"-script bijvoegt aan het spelerpersonage of het relevante spelobject en configureer de beweging van de speler om de 'StartWalking()'- en 'StopWalking()'-methoden te activeren op basis van het lopen staat.

Conclusie

Hopelijk heeft deze tutorial je geholpen om willekeurige voetstapgeluiden met een specifieke frequentie af te spelen wanneer de speler loopt. Vergeet niet om het script en de instellingen aan te passen aan de vereisten, zoals het aanpassen van de minimale en maximale tijd tussen voetstapgeluiden. Voetstapgeluiden kunnen de onderdompeling en algehele ervaring van de speler aanzienlijk verbeteren, waardoor een extra laag realisme aan het spel wordt toegevoegd.

Voorgestelde artikelen
Een GrabPack maken in Unity, geïnspireerd door Poppy Playtime
Een Bullet Time-effect creëren in eenheid
Interactieve objecten creëren in eenheid
Kinetische interacties in eenheid implementeren
Laden en kasten openen met specifieke sleutels in eenheid
Pick-and-drop-systeem zonder inventaris in eenheid
Spelerstoegang toevoegen aan een auto in Unity