Search Unity

OnTriggerEnter problem

Discussion in 'Physics' started by Xhitman, Jun 26, 2020.

  1. Xhitman

    Xhitman

    Joined:
    Oct 30, 2015
    Posts:
    452
    The red box have the attached script, it record any other collider enter.

    Character attack suddenly fail as shown, because objectInTouch is empty in inspector. But you can see the other character is inside the red box. Why?



    Code (CSharp):
    1. public class HumanSensor : MonoBehaviour
    2. {
    3.     [SerializeField] GameObject enterRobotText;
    4.     SceneDataCenter _sceneDataCenter;
    5.  
    6.     public bool ableToEnterCommanderRobot = false;
    7.     public GameObject interactObject = null;
    8.     public List<Transform> objectInTouch = new List<Transform>();
    9.  
    10.     private void Awake()
    11.     {
    12.         _sceneDataCenter = FindObjectOfType<SceneDataCenter>();
    13.  
    14.         enterRobotText.SetActive(false);
    15.     }
    16.  
    17.     private void OnTriggerEnter(Collider other)
    18.     {
    19.         if(!objectInTouch.Contains(other.transform.root))
    20.             objectInTouch.Add(other.transform.root);
    21.  
    22.         if (other.transform.root.GetComponent<VehicleInput>() || other.transform.root.GetComponent<RobotInput>())
    23.         {
    24.             enterRobotText.SetActive(true);
    25.             ableToEnterCommanderRobot = true;
    26.             interactObject = other.transform.root.gameObject;
    27.         }
    28.     }
    29.  
    30.     private void OnTriggerExit(Collider other)
    31.     {
    32.         objectInTouch.Remove(other.transform.root);
    33.  
    34.         if (other.transform.root.GetComponent<VehicleInput>() || other.transform.root.GetComponent<RobotInput>())
    35.         {
    36.             Debug.Log("x");
    37.             enterRobotText.SetActive(false);
    38.             ableToEnterCommanderRobot = false;
    39.             interactObject = null;
    40.         }
    41.     }
    42.  
    43.     public void AllTextDisable()
    44.     {
    45.         enterRobotText.SetActive(false);
    46.  
    47.     }
    48.  
    49. }
    50.