Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- [RequireComponent(typeof(Rigidbody))]
- [RequireComponent(typeof(AudioSource))]
- [RequireComponent(typeof(Collider))]
- public class CollisionAudio : MonoBehaviour
- {
- [SerializeField] private AudioClip collideSoft;
- [SerializeField] private AudioClip collideHard;
- [SerializeField] private float lowPitchRange = .75F;
- [SerializeField] private float highPitchRange = 1.5F;
- [SerializeField] private float velocityClipSplit = 10F; // under this volume, use soft sound
- // over this volume, use hard sound
- private float velToVol = .2F;
- private Rigidbody rb;
- private AudioSource audioSource;
- void Start()
- {
- rb = GetComponent<Rigidbody>();
- audioSource = GetComponent<AudioSource>();
- }
- private void Reset()
- {
- if (!rb) rb = GetComponent<Rigidbody>();
- if (!audioSource) audioSource = GetComponent<AudioSource>();
- }
- void OnCollisionEnter(Collision coll)
- {
- audioSource.pitch = Random.Range(lowPitchRange, highPitchRange);
- float hitVol = coll.relativeVelocity.magnitude * velToVol;
- if (coll.relativeVelocity.magnitude < velocityClipSplit)
- audioSource.PlayOneShot(collideSoft, hitVol);
- else
- audioSource.PlayOneShot(collideHard, hitVol);
- }
- }
Add Comment
Please, Sign In to add comment