- Home /
Issues with Translations and OnTriggerExit
Hi, Thanks for the time. So I have a cube which the player moves around. I have it set to move EXACTLY 1 space forward
yield return new WaitForSecondsRealtime(.05f);
transform.Translate(0f, 0f, .2f );
yield return new WaitForSecondsRealtime(.05f);
transform.Translate(0f, 0f, .2f );
yield return new WaitForSecondsRealtime(.05f);
transform.Translate(0f, 0f, .2f );
yield return new WaitForSecondsRealtime(.05f);
transform.Translate(0f, 0f, .2f );
yield return new WaitForSecondsRealtime(.05f);
transform.Translate(0f, 0f, .2f );
switch (data.compass)
{
I have it set to this so it gradually moves forward. A la a Dungeon crawler game that is tile based. In order to stop the player from ramming themselves through walls I have a bool that controls the forward IEnemorator.
if (Input.GetAxisRaw("Forward") == 1) {
if (data.on == true)
{
data.on = false;
StartCoroutine(Forward());
}
}
Then (because on is from a scriptable object) I have the collision script turn it off when the box collider of the player meets a triggerable box collider on the wall.
void OnTriggerEnter (Collider other)
{
...
if (other.gameObject.tag == "wall")
{
Debug.Log("STOP");
data.on = false;
}
}
Now here comes the Issue. I have the script set so that OnTriggerExit I turn ON back to true, in game this works intermittently, and more importantly, it causes my player to go flying through walls and through the map. I tried using Time.Delta time, however that makes it impossible to make the player move exactly 1 unity, and it still doesn't stop the player from glitching out! What Am I doing wrong, and what can I do to fix it?
private void OnTriggerExit(Collider other)
{
data.on = true;
}
NOTES My player is a cube (First person placeholder) the box collider is actually a long extrusion that is set to just nudge the box colliders of the walls.
The code I have only works 25% of the time anyway (the other 25 percent it acts like I am in front of a wall)