Как определить на каком слое terrain находится игрок в unity

Рейтинг: 0Ответов: 1Опубликовано: 06.05.2023

я делаю шутер от первого лица на юнити, я сделал звуки шагов в зависимости от поверхности(по тегу или по слою) (я использовал обычные объекты) но теперь я создал terrain и на нем у меня есть камни земля песок и т.п., тут встаёт вопрос, как определить с каким слоем терейна Я сопрокасаюсь (текстуры)?

Ответы

▲ 0

Привет попробуй создать 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;
}