Jump to content
Unity Insider Forum

Audio Bei Distance


Deadfish

Recommended Posts

Hallo zusammen,

Ich bekomme eine Sache nicht gelöst weis aber auch gar nicht ob das überhaupt geht
und zwar möchte ich die Audio Datei von meinen Bogen wenn ich die Sehne Spanne Abspielen.
Ja einfach Audio.play :D nein so mein ich das nicht sondern, wenn ich mit der Hand die Sehne ziehe spielt der den ton je nach dem wie schnell ich ziehe oder stoppe,
damit das Sehnen ziehen realistischer ist.

Also habe ich über legt ob ich das hier mit einbinden kann :
 

float dist = (stringStartPoint.transform.position - grabpoint.transform.position).magnitude;
				stringAttachPoint.transform.localPosition = stringStartPoint.transform.localPosition + new Vector3 (10f * dist, 0f, 0f);

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Evtl. kommst du mit dem Pitchwert der Audiosource zum gewünschten Ergebnis:
https://docs.unity3d.com/ScriptReference/AudioSource-pitch.html

Ansonsten kann man auch den Clip "vorspulen", damit spielt er dann nur einen Teil des Audios ab. Einfach auf time ein paar Sekunden draufaddieren (wenn der Sound mehrere Sekunden lang ist). Ggf. die Länge des Clips vorher auslesen, damit man die Restlänge berechnen kann:
https://docs.unity3d.com/ScriptReference/AudioSource-time.html

Beispiel:

Cliplänge:
3 Sekunden (kann man aus dem Clip auslesen)

Bogen-Distanz Maximal: 
5 (musst du selbst festlegen - siehe Skript unten)

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour
{
    private AudioSource audioSource;
    private float clipLength;
    private float maxBowDist = 5.0f;
    private float addedTime;

    void Start()
    {
        audioSource = GetComponent<AudioSource>();
        clipLength = audioSource.clip.length;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            float dist = (stringStartPoint.transform.position - grabpoint.transform.position).magnitude;
            addedTime = (clipLength/maxBowDist) * dist;
            audioSource.time = clipLength - addedTime;
            // Audioclip verkürzt abspielen je nach Bogenspannung
            audioSource.Play();
        }
    }
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...