Ошибка AudioSource - PullRequest
       13

Ошибка AudioSource

1 голос
/ 19 ноября 2011

Я следую указаниям из книги, чтобы собрать простой FPS.Тем не менее, я не получаю те же результаты, что в книге сказано, что я должен.

Последнее, что я пытался сделать, это добавить звук к своему «пистолету», чтобы этот звуковой клип «pop.wav»"играет, когда вы стреляете.

Вот рабочий код, прежде чем я предпринял шаги для добавления звука.

var projectile : Rigidbody;
var speed = 50;

function Update () {
    if(Input.GetButtonDown("Fire1"))
    {
        var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position +
        Vector3(0,-1,0), transform.rotation);
        instantiatedProjectile.velocity = transform.TransformDirection(Vector3(0,0,speed));
        Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);  
    }
}    

Итак, я сделал то, что сказано в книге, и импортировал Pop.wav.Затем он сказал добавить две простые строки кода в скрипт.

var projectile : Rigidbody;
var speed = 50;
var pop : AudioClip;

function Update () {
    if(Input.GetButtonDown("Fire1"))
    {
        var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position +
        Vector3(0,-1,0), transform.rotation);
        instantiatedProjectile.velocity = transform.TransformDirection(Vector3(0,0,speed));
        Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);

        audio.Play(pop);    
    }
}    

Assets / FireProjectile.js (12,27): BCE0023: Нет подходящей версии 'UnityEngine.AudioSource.Play'для списка аргументов '(UnityEngine.AudioClip)' был найден.

Буду очень признателен за помощь в этом.

Ответы [ 5 ]

1 голос
/ 06 ноября 2013

Вам необходимо присвоить свою переменную.Это было бы что-то вроде

pop.clip = (anything here)

1 голос
/ 02 апреля 2012

Вы должны использовать audio.PlayOneShot(pop) вместо audio.Play().

Но если вы хотите использовать audio.Play();, вы должны знать, что он не принимает AudioClip в качестве аргумента.

Используйте следующий код и убедитесь, что вы назначаете pop для свойства Audio Clip компонента Audio Source, перетаскивая поп-звук из Project в Инспектор.audio.Play() использует назначенный по умолчанию аудиоклип в AudioSource.

var projectile : Rigidbody;
var speed = 50;

function Update () {
    if(Input.GetButtonDown("Fire1"))
{
    var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position +
Vector3(0,-1,0), transform.rotation);
    instantiatedProjectile.velocity = transform.TransformDirection(Vector3(0,0,speed));
    Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);

audio.Play();        

    }
}

@script RequireComponent(AudioSource)  
1 голос
/ 02 декабря 2011

На самом деле, вы пропустили что-то за пределами сценария. Вам действительно нужно добавить аудио слушателя и источник звука в сцене. Тогда вы сможете услышать звук.

Причина этого заключается в том, что единство допускает трехмерный звук, то есть звук, который находится в трехмерном пространстве и будет увеличиваться по громкости, если вы приблизитесь к нему. Аудиоисточник, очевидно, является источником звука, а Аудио слушатель, так сказать, вашим слухом. Обычно аудио слушатель находится на вашем персонаже. Но вы можете настроить его так, чтобы он находился на любом объекте, но тогда этот объект должен был бы приблизиться к источнику звука, а не к персонажу, что не имеет никакого смысла вообще.

Тем не менее, не забывайте, что одновременно должен быть ОДИН аудио-СЛУШАТЕЛЬ. Бесконечные аудио ИСТОЧНИКИ разрешены. :)

1 голос
/ 19 ноября 2011

Я не вижу, как вы назначаете файл для воспроизведения на аудиоклип ... что-то вроде

pop.clip = ...

В кратком поиске «Unity 3D» упоминается назначение клипа и проверка его готовности к воспроизведению.

0 голосов
/ 19 ноября 2011

На основе документации Unity (я никогда не использовал Unity, поэтому не могу быть уверен, что это правильно) я обнаружил, что вы, вероятно, хотите сделать что-то подобное.

var projectile : Rigidbody;
var speed = 50;
var pop : AudioClip;

...

if(Input.GetButtonDown("Fire1"))
{
    var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position +
    Vector3(0,-1,0), transform.rotation);
    instantiatedProjectile.velocity = transform.TransformDirection(Vector3(0,0,speed));
    Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);

    audio.PlayOneShot(pop);
}

Это на самом деле все, что вам нужно сделать. Присвойте переменную и затем скажите ей, чтобы она воспроизводилась в функции обновления при каждом нажатии Fire1, который по умолчанию является ЛКМ.

PlayOneShot означает, что звук не будет зацикливаться или что-то еще, что, я полагаю, вам нужно для выстрелов или тому подобного. В скобках вы просто называете звук, который хотите воспроизвести.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...