Как определить на каком слое terrain находится игрок в unity
я делаю шутер от первого лица на юнити, я сделал звуки шагов в зависимости от поверхности(по тегу или по слою) (я использовал обычные объекты) но теперь я создал terrain и на нем у меня есть камни земля песок и т.п., тут встаёт вопрос, как определить с каким слоем терейна Я сопрокасаюсь (текстуры)?
Ответы (1 шт):
Автор решения: KengiTakery
→ Ссылка
Привет попробуй создать Layer на terrain и в скрипте проверять на то, какого слоя касается коллайдер игрока
Как пример код установки звука:
[SerializeField] LayerMask sandLayer;
[SerializeField] LayerMask groundLayer;
[Header("FootStepsAudio")]
[SerializeField] AudioSource footstepsAudoSource;
[Space]
[SerializeField] AudioClip sandFootsteps;
[SerializeField] AudioClip graundFootsteps;
private CircleCollider2D footCollider;
void Start()
{
footCollider = GetComponent<CircleCollider2D>();
}
private void CheckLayer()
{
if (footCollider.IsTouchingLayers(sandLayer)) SetFootSteps(footstepsAudoSource, sandFootsteps);
else if (footCollider.IsTouchingLayers(groundLayer)) SetFootSteps(footstepsAudoSource, graundFootsteps);
}
private void SetFootSteps(AudioSource audioSource, AudioClip audioClip)
{
audioSource.clip = audioClip;
}