Один из способов сделать это - проверить, изменился ли статус inCeiling по сравнению с предыдущим обновлением. Попробуйте добавить следующее
//keeps the previous state of isInCeiling, add this to wherever isInCeiling is defined.
bool wasInCeiling
//add this check to your list of if-checks
if(wasInCeiling == true && isInCeiling == false)
{
NCrouched() ;
}
Это должно заставить игрока автоматически вставать всякий раз и только тогда, когда он вылезает из потолка.
Также вам нужно добавить немного кода обновления, поэтому при каждом обновлении вы сначала устанавливаете текущее значение isInCeiling на wasInCeiling, а затем выполняете проверку текущего состояния isInCeiling. Это всегда должно держать wasInCeiling на один кадр позади isInCeiling.