繁体   English   中英

一次OnCollisionStay在C#中统一检测两个平面的碰撞?

[英]OnCollisionStay at a time Collision detection for two plane in C# unity?

我是一个初学者,正在从事Stacker游戏,并且有多个平面,但是其中一个是正确的,而另一个是错误的。 现在我的问题是,有时堆垛机同时停在两架飞机上,而这两个功能都会在“游戏结束”和其他“进入下一关”时被调用。 告诉我如何比较两个标签,如果两个标签都为真,那就做什么。 谢谢这里是我的代码。

void OnCollisionStay(Collision collision) {

        if (collision.collider.tag == "plane1") {

            if (script2.rb.velocity.magnitude == 0.0f) {

                collision.collider.gameObject.GetComponent<Renderer> ().material.mainTexture = color1;
                cont++;
                SetCountText ();
                script1.jump1 ();
                StartCoroutine (wait ());
            }

        } else if (collision.collider.tag == "plane2") {
            if (script2.rb.velocity.magnitude == 0.0f) {
                script.jump ();
                Time.timeScale = 0;
            }
            else {
                if (script2.rb.velocity.magnitude == 0.0f) {
                    script.jump ();
                    Time.timeScale = 0;
                }

            }


        }

      if (collision.collider.tag == "plane1" && collision.collider.tag ==    "plane2") {

            script.jump ();
            Time.timeScale = 0;
            Debug.Log("hello");
        }

您的代码并不完全符合您的问题,但是我认为问题是“胜利”和“失败”条件都是由物理学触发的,并且都发生在同一帧中?

最简单的处理方法是让布尔(或更好的是一个枚举)存储游戏状态-如果关卡结束,碰撞函数将不执行任何操作。 似乎应该有一种漂亮,优雅的方法来解决此问题,但我不知道有哪一种方法。 禁用对撞机可能不起作用,因为在您的物理回调函数被调用时,这两种冲突已经发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM