Страница 1 из 1

Звук шагов с помощью RaycastHit

СообщениеДобавлено: 27 июн 2018, 23:26
warmenzim
Пытаюсь сделать звук шагов с помощью райкаста. Но райкаст воспроизводит звук до тех пор пока сталкивается. Можно ли заставить райкаст работать словно OnTriggerEnter? Чтобы звук воспроизводился лишь когда персонаж поставил ногу на землю?

Вот часть кода:
Синтаксис:
Используется csharp
int layerMask = 1 << 10;
                layerMask = ~layerMask;
                RaycastHit hitLeftFoot;
                if(Physics.Raycast(leftFootLocation.position,Vector3.down,out hitLeftFoot,distRayCheck,layerMask)){
                        Debug.DrawRay(leftFootLocation.transform.position, transform.TransformDirection(-Vector3.up) * hitLeftFoot.distance, Color.red);
                        leftFootAudioSource.PlayOneShot(impactLeft, 0.7F);
                }
                RaycastHit hitRightFoot;
                if(Physics.Raycast(rightFootLocation.position,Vector3.down,out hitRightFoot,distRayCheck,layerMask)){  
                        Debug.DrawRay(rightFootLocation.transform.position, transform.TransformDirection(-Vector3.up) * hitRightFoot.distance, Color.red);
                        rightFootAudioSource.PlayOneShot(impactRight, 0.7F);
                }
        }
 

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 27 июн 2018, 23:36
1max1
В чем проблема прицепить коллайдеры на ноги...

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 27 июн 2018, 23:52
warmenzim
1max1 писал(а):В чем проблема прицепить коллайдеры на ноги...

Я делал скрипт на звук шагов используя oncollisionenter, но корректно работает лишь 1на нога. Вероятно из-за кривой анимации, либо моих рук.

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 28 июн 2018, 09:07
IDoNotExist
warmenzim писал(а):Можно ли заставить райкаст работать словно OnTriggerEnter? Чтобы звук воспроизводился лишь когда персонаж поставил ногу на землю?

Ну, как то так:
Синтаксис:
Используется csharp
private bool haveHit = false;

private void Update()
{
    if(Physics.Raycast())
    {
        TryPlaySound();
        haveHit = true;
    }else{
        haveHit = false;
    }
}


private bool TryPlaySound()
{
    if(haveHit)
        return;

    AudioSource.PlayOneShot();
}

 

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 28 июн 2018, 10:45
jr900
А я делал звук шагов на основе таймера. Т.е. пока держим клавиши шагания или стрейфа (и шифт для бега) - запускается счетчик, по истечении времени "шага" рейкастим вниз поверхность и играем звук, счетчик сбрасываем. Так можно точно настроить скорость проигрывания шагов и сделать разную на бег и на шаг.

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 28 июн 2018, 11:24
Zaic
к тому же рейкастить каждый кадр - ооооой как дорого для ресурсов процессора.

Re: Звук шагов с помощью RaycastHit

СообщениеДобавлено: 28 июн 2018, 17:18
warmenzim
Всем спасибо за советы. Буду исправляться [curved_hands]