Jump to content
Unity Insider Forum
Sign in to follow this  
Deadfish

Audio Bei Distance

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

 

Share this post


Link to post
Share on other sites

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

 

  • Haha 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×