按钮单击

时间:2015-12-10 10:55:54

标签: c# unity3d

我和团结一致并且有音频问题。这是用户点击按钮,对象落在地面上并销毁的情况。点击按钮时,对象掉落的声音效果正在播放。然后销毁,Object再次实例化然后再点击声音效果再播放。但是当一个物体掉落并且此时不碰撞时,用户再次点击该按钮声音再次播放。我希望当一个物体完全消失时再次点击发生并发出声音。

Code CubeScript:

public class Cube : MonoBehaviour {


    Rigidbody2D body;


    void Start () {

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


}

Code ColliderScript:

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);


    }


}

1 个答案:

答案 0 :(得分: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被重置。我不完全确定你的逻辑。