Итак, осознав ваши проблемы, я изменил этот ответ.
Сначала к вашему коду должен быть прикреплен только один игровой объект, например, камера, например, ![like this](https://i.stack.imgur.com/dAOG9.png)
также я назвал свой сценарий StackOverflow, вы можете назвать его как угодно.
И BoxCollider должен быть прикреплен к вашей пластике c bottle или чашке, как это
Вы можете установить его на триггер или нодриггер (в зависимости от вашей необходимости) и установить его размер в соответствии с реальным размером ваших объектов в сцене.
и, наконец, это скрипт, который я назвал StackOverFlow, и SpeechToText в вашем случае
public class StackOverFlow : MonoBehaviour {
[SerializeField] AudioClip _audioClip;
[SerializeField] [Range(0.0f, 1.0f)] float _volume = 1;
AudioSource _audioSource;
bool isPlaying;
void Start() {
_audioSource = GetComponent<AudioSource>();
_audioSource.clip = _audioClip;
_audioSource.volume = _volume;
}
void Update() {
if (Input.touchCount > 0) {
Touch touch = Input.touches[0];
if (touch.phase == TouchPhase.Began) {
Ray touchRay = Camera.main.ScreenPointToRay(touch.position);
Physics.Raycast(touchRay, out RaycastHit hit, Mathf.Infinity);
if (hit.collider != null) {
if (hit.collider.name.Contains("Cup") || hit.collider.name.Contains("Bottle")) {
PlaySound();
}
else {
Debug.Log($"otherobject {hit.collider.name}");
}
}
}
}
}
private void PlaySound() {
if (!isPlaying) {
_audioSource.Play();
isPlaying = true;
StartCoroutine(CheckIfPlaying());
}
}
private IEnumerator CheckIfPlaying() {
yield return new WaitForSeconds(_audioClip.length);
isPlaying = false;
}
}
спросите меня в комментариях, если что-то неясно