-
Unity 충돌 감지 시 효과음 재생개발/Unity 2020. 1. 31. 13:45
using UnityEngine; public class CollisionSound : MonoBehaviour { // 효과음을 재생할 최소 충돌 속도 [SerializeField] private const float threshold = 1f; private AudioSource audioSource; void Awake() { audioSource = GetComponent<AudioSource>(); // 효과음은 Scene 시작에 재생되거나 Loop되지 않는다 if (audioSource) { audioSource.playOnAwake = false; audioSource.loop = false; } } private void OnCollisionEnter(Collision collision) { if (collision.relativeVelocity.magnitude < threshold) return; if(audioSource && audioSource.enabled) audioSource.Play(); } }
collision.impulse를 threshold로 사용하면 소리 재생이 되지 않는 경우가 많이 발생하여 relativeVelocity로 대체함. 그리고 AudioSource 컴포넌트가 없거나 비활성화 되어 있을 때의 처리를 추가.
AudioSource와 함께 GameObject에 추가하면 사용 가능.
'개발 > Unity' 카테고리의 다른 글
Unity Oculus 컨트롤러로 OVRGrabbable 오브젝트 발사하기 (0) 2020.02.06 Unity Oculus Quest 최적화 (0) 2020.02.05 Unity 라이트 프로브와 실시간 조명 (0) 2020.01.31 Unity SerializedObject target has been destroyed 오류 해결 (0) 2020.01.23 Unity Oculus 컨트롤러 진동 (0) 2020.01.21