【问题标题】:Lock Position On Multiple Trigger Enters在多个触发器输入上锁定位置
【发布时间】:2021-02-18 14:57:46
【问题描述】:

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

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

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

【问题讨论】:

  • 宁愿有一个专门的班级,门上有一个标志/计数器,只在第一个触发器进入时做你的事情?

标签: c# unity3d


【解决方案1】:

使用计数器知道里面有多少触发器: 好像两者都在里面你需要双重压力效果我建议高度乘以计数器Height * entered,但取决于你可能需要的任何行为。

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

【讨论】:

  • 不,抱歉,没用。当触发器被激活时,变换只会被锁定,并且永远不会重置。
  • 该代码不应该完全适合您的确切使用情况,我不知道。它甚至没有被调试。它应该给你一个想法来处理内部有多少触发器的状态,以控制你激活了多少“压力板”来相应地处理你的门的状态。你可以Debug.Logcaunter 在你的游戏中跟踪计数器的行为并尝试继续前进。祝你好运
猜你喜欢
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-06
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
相关资源
最近更新 更多