Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 多个触发器输入上的锁定位置_C#_Unity3d - Fatal编程技术网

C# 多个触发器输入上的锁定位置

C# 多个触发器输入上的锁定位置,c#,unity3d,C#,Unity3d,标题听起来令人困惑,但为了简单起见。。。我有两个触发器,或者压力板,如果你愿意的话,它们连接到一扇门上。当两个对象都在触发器中时,门将升高两倍。这就是问题所在,我需要门的变换在一个或两个触发器都处于活动状态的情况下保持不变,但在两个触发器都处于活动状态时仍然重置为原始位置。[触发器代码如下所示] 如果有人对此有想法,请告诉我 using System.Collections; using System.Collections.Generic; using UnityEngine; public

标题听起来令人困惑,但为了简单起见。。。我有两个触发器,或者压力板,如果你愿意的话,它们连接到一扇门上。当两个对象都在触发器中时,门将升高两倍。这就是问题所在,我需要门的变换在一个或两个触发器都处于活动状态的情况下保持不变,但在两个触发器都处于活动状态时仍然重置为原始位置。[触发器代码如下所示]

如果有人对此有想法,请告诉我

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PadTriggerPlayer1 : MonoBehaviour
{
   public GameObject door;
   public float Height = 0f;
   public bool doorOpened = false;

   void OnTriggerEnter(Collider col)
   {
       if(col.gameObject.tag == "Player1")
       {
           door.transform.position += new Vector3(0f, Height, 0f);
           doorOpened = true;
       }
   }

   void OnTriggerExit(Collider col)
   {
       if(col.gameObject.tag == "Player1")
       {
           door.transform.position += new Vector3(0f, -Height, 0f);
           doorOpened = false;
       }
   }
}

使用计数器了解触发器的数量: 如果两者都在内部,你需要双重压力效果,我建议高度乘以输入的计数器高度*,但取决于你可能需要的任何行为

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PadTriggerPlayer1 : MonoBehaviour
{
   public GameObject door;
   public float Height = 0f;
   public bool doorOpened = false;
   private int entered = 0;

   void OnTriggerEnter(Collider col)
   {
       if(col.gameObject.tag == "Player1")
       {
           entered++;
           door.transform.position += new Vector3(0f, Height * entered, 0f);
           doorOpened = true;
       }
   }

   void OnTriggerExit(Collider col)
   {
       if(col.gameObject.tag == "Player1")
       {
           entered--;
           door.transform.position += new Vector3(0f, -Height * entered, 0f);
           doorOpened = false;
       }
   }
}

而是有一个门上有旗帜/计数器的专用类,只在第一个触发器进入时做你自己的事情?不,对不起,不起作用。当触发器被激活时,转换只会被锁定,而不会被重置。对于您的确切使用情况,代码不应该完美工作,我不知道。它甚至没有调试。它应该给你一个想法来处理内部有多少触发器的状态,以控制你激活了多少压盘来相应地处理门的状态。您可以调试。记录计数器以跟踪游戏中计数器的行为,并尝试继续。祝你好运