1

本の指示に従って、単純な 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 をインポートしました。次に、スクリプトに 2 行の単純なコードを追加するように指示されました。

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.AudioClip)' の 'UnityEngine.AudioSource.Play' の適切なバージョンが見つかりませんでした。

これについて何か助けていただければ幸いです。

4

5 に答える 5

1

再生するファイルをオーディオクリップに割り当てているとは思いません...

pop.clip = ...

Unity 3d を簡単に検索すると、クリップの割り当てと、再生する準備ができていることの確認について言及されています。

于 2011-11-19T06:20:38.240 に答える
1

変数を割り当てる必要があります。それは次のようなものになります

pop.clip = (anything here)

于 2013-11-05T21:54:54.003 に答える
1

audio.PlayOneShot(pop)の代わりに使用する必要がありますaudio.Play()

ただし、使用するaudio.Play();場合は、引数として AudioClip を使用しないことを知っておく必要があります。

次のコードを使用し、ポップ サウンドをプロジェクトからインスペクタにドラッグして、オーディオ ソース コンポーネントのオーディオ クリップ プロパティにポップを割り当てます。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)  
于 2012-04-02T10:56:11.850 に答える
1

実は、スクリプト以外の何かを見落としています。実際には、オーディオ リスナーとオーディオ ソースをシーンに追加する必要があります。すると、音が聞こえるようになります。

この理由は、ユニティは 3D サウンド、つまり 3D 空間に位置するサウンドを可能にし、それに近づくと音量が大きくなるためです。オーディオ ソースは明らかに音の発信元であり、オーディオ リスナーはいわば耳の位置です。通常、オーディオ リスナーはキャラクター上にあります。しかし、それが任意のオブジェクト上にあるようにリグを設定することはできますが、その場合、そのオブジェクトはキャラクターではなくオーディオ ソースに近づく必要があり、まったく意味がありません。

ただし、一度に 1 つのオーディオ LISTENER のみを使用することを忘れないでください。無限のオーディオ ソースが許可されます。:)

于 2011-12-01T21:11:09.020 に答える