public void TriggerLeft(Collider collider, Vector3 inwardVector) { posAfter = fpController.transform.position; Vector3 dif = posAfter - posBefore; if (dif.magnitude <= 3) { return; // The player hasn't moved through the trigger } // deactivate ghoul var currentHex = mainHex; var directionAngle = Vector3.Angle(inwardVector, dif); var destHex = directionAngle < 90 ? currentHex : hexBefore; var outCollider = destHex.transform.Find("Hallway Trigger").GetComponent <Collider>(); if (directionAngle < 90) { // going into hex librarian.MovedToNextRoom(); MovedToNextRoom(); } else { // going out of hex librarian.MovedToPreviousRoom(); MovedToPreviousRoom(); } var currentColPos = collider.transform.position; var currentColOffset = librarian.transform.position - currentColPos; var outColPos = outCollider.transform.position; librarian.transform.position = outColPos + currentColOffset; UpdateSurroundingHexLocations(); foreach (var hex in surroundingHexagons) { hex.RespawnGhoul(); } }