【问题标题】:How can check the OnCollisionEnter2D Continuous如何检查 OnCollisionEnter2D Continuous
【发布时间】:2015-08-03 14:47:14
【问题描述】:

我有一个动画和两个 2D 游戏对象一条线和一个框。 Line 有一个关于变换 x 的动画。不久,线路通过框转到右侧并重新启动。当线路崩溃时,我正在尝试播放音频。该系统通过 void OnCollisionEnter2D 工作。但它的工作只有一次。 OnCollisionEnter2D 不会每次都检查崩溃。那么,我该如何解决逻辑问题。

public AudioClip A1;
public bool b1;

  void Update(){

    if (b1 == true) {
        AudioSource.PlayClipAtPoint (A1, transform.position);
    }

}

void  OnCollisionEnter2D(Collision2D coll) {
    if (coll.gameObject.tag == "Button1")

        b1 = true;

}

void OnCollisionExit2D(Collision2D coll){
if (coll.gameObject.tag == "Button1")
        b1 = false;

}

【问题讨论】:

  • 我还没有选择真正的答案,因为我的项目不再注意到任何类型的方法的崩溃。我没有改变任何东西。我会解决的。

标签: c# unity3d collision-detection


【解决方案1】:

你可以简单地使用OnCollisionStay2D(Collision2D)你可以在这个函数中播放你的动画。

public AudioClip A1;

void  OnCollisionStay2D(Collision2D coll)
{
    if (coll.gameObject.tag == "Button1")
        AudioSource.PlayClipAtPoint (A1, transform.position);

}

【讨论】:

    【解决方案2】:

    使用 OnCollisionStay2D,每次都会检查崩溃

    使用 UnityEngine; 使用 System.Collections;

    public class ExampleClass : MonoBehaviour {
        void OnCollisionStay2D(Collision2D coll) {
            if (coll.gameObject.tag == "Button1")
                b1 = true;
    
        }
    }
    

    【讨论】:

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