【问题标题】:Audio play issue on button click单击按钮时的音频播放问题
【发布时间】:2016-03-15 23:35:03
【问题描述】:

我正在与 unity 合作,但音频有问题。这是当用户单击按钮时,对象掉在地上并销毁的场景。单击按钮时播放物体掉落的音效。然后销毁,再次实例化对象,然后再次播放相同的点击音效。但是当一个物体正在下落并且此时没有碰撞时,用户再次单击该按钮声音再次播放。我希望当一个对象完全销毁而不是再次单击并播放声音时。

代码 CubeScript:

public class Cube : MonoBehaviour {


    Rigidbody2D body;


    void Start () {

        body = GetComponent<Rigidbody2D>();
        body.isKinematic = true;
    }


}

代码碰撞脚本:

public class Ground : MonoBehaviour {

    private Button bt;

    public GameObject cube;

    public AudioSource source;

    public AudioClip clip;

    void Start () {


        bt = GameObject.FindGameObjectWithTag ("Button").GetComponent<Button> ();

        bt.onClick.AddListener (() => Fall ());
    }

    void OnCollisionEnter2D(Collision2D col) {
        Destroy (col.gameObject);
        Instantiate (cube,new Vector3(0f,4.19f,0f),Quaternion.identity);


    }


    public void Fall(){

        GameObject.FindGameObjectWithTag ("Player").GetComponent<Rigidbody2D> ().isKinematic = false;

        source.PlayOneShot(clip);


    }


}

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:
    void OnCollisionEnter2D(Collision2D col) {
        Destroy (col.gameObject);
        Instantiate (cube,new Vector3(0f,4.19f,0f),Quaternion.identity);
        isFalling = false;  // here
    }
    
    private bool isFalling = false;  // here
    public void Fall()
    {
        GameObject.FindGameObjectWithTag ("Player").GetComponent<Rigidbody2D> ().isKinematic = false;
        if(isFalling == false){
            source.PlayOneShot(clip);
            isFalling = true;   // here
        }
    }
    

    几乎当你按下时,它会调用 Fall,如果没有任何东西掉下来,声音就会发生。在碰撞时,isFalling 被重置。我不完全确定你的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多