void OnCollisionEnter(Collision collision) { float speed = previous_velocities[0].magnitude; float impact = speed * weight_; //print("Item impact = " + impact); float play_volume; bool sliding = false; bool should_play = true; if (Mathf.Abs(previous_velocities[0].y) < minimum_speed_to_make_sound && Mathf.Abs(previous_velocities[0].y) > 0.2f) { play_volume = 0; sliding = true; should_play = false; } else if (impact <= quiet_vol_impact_threshold) { play_volume = quiet_vol; sliding = true; should_play = true; } else if (impact <= middle_vol_impact_threshold) { play_volume = quiet_vol; sliding = false; should_play = true; } else if (impact <= loud_vol_impact_threshold) { play_volume = middle_vol; sliding = false; should_play = true; } else // impact > middle_vol_impact_threshold { play_volume = loud_vol; sliding = false; should_play = true; } if (should_play) { audio_src_.volume = play_volume; if (sliding) { //print("item is sliding"); //audio_src_.PlayOneShot(drag_sound_); AudioSource.PlayClipAtPoint(drag_sound_, transform.position, play_volume); } else { //audio_src_.PlayOneShot(crash_sound_); AudioSource.PlayClipAtPoint(crash_sound_, transform.position, play_volume); } //text_obj.SetActive(true); // check to see if any guards heard the object GameObject[] guards = GameObject.FindGameObjectsWithTag("Guard"); for (int i = 0; i < guards.Length; i++) { float distance = Vector3.Distance(guards[i].transform.position, transform.position); if (vol_dist_scalar * play_volume / distance > 1) { PatrolScript ps = guards[i].GetComponent <PatrolScript>(); ps.Investigate(transform); } } } }