我和团结一致并且有音频问题。这是用户点击按钮,对象落在地面上并销毁的情况。点击按钮时,对象掉落的声音效果正在播放。然后销毁,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);
}
}
答案 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被重置。我不完全确定你的逻辑。