Skip to main content
While we're doing code cleanup, CompareTag() beats tag ==, and we can cache the Collider we want instead of searching for it.
Source Link
DMGregory
  • 141k
  • 23
  • 258
  • 401

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain;terrainCollider; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == CompareTag("Player")) {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>()terrainCollider, true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == CompareTag("Player")) {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>()terrainCollider, false);
        }
    }
     
}

I was referencing Collider player instead of Collider c. Since the player's collider is passed as an argument, there's no need to hold a reference to the player as a member variable.

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>(), true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>(), false);
        }
    }
 
}

I was referencing Collider player instead of Collider c.

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider terrainCollider; // assign in inspector

    void OnTriggerEnter (Collider c) {      
        if (c.CompareTag("Player")) {
            Physics.IgnoreCollision(c, terrainCollider, true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.CompareTag("Player")) {
            Physics.IgnoreCollision(c, terrainCollider, false);
        }
    }    
}

I was referencing Collider player instead of Collider c. Since the player's collider is passed as an argument, there's no need to hold a reference to the player as a member variable.

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), false);
        }
    }

}

I was referencing Collider player instead of Collider c.

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), false);
        }
    }

}

I was referencing Collider player instead of Collider c.

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>(), true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c, terrain.GetComponent<Collider>(), false);
        }
    }

}

I was referencing Collider player instead of Collider c.

Source Link
Pipsqweek
  • 173
  • 1
  • 8

Small oversight on my part:

using UnityEngine;
using System.Collections;

public class TerrainHole : MonoBehaviour {

    public Collider player; // assign in inspector?
    public Terrain terrain; // assign in inspector?

    void OnTriggerEnter (Collider c) {      
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), true);
        }
    }

    void OnTriggerExit (Collider c) {
        if (c.tag == "Player") {
            Physics.IgnoreCollision(c.GetComponent<Collider>(), terrain.GetComponent<Collider>(), false);
        }
    }

}

I was referencing Collider player instead of Collider c.