Я создаю собственную систему аватаров для моей игры Unity3D, которая дает игрокам возможность загружать свои собственные аватары.
Поскольку моя игра предназначена для виртуальной реальности, я, конечно, хочу показать тело пользователю, скрывая при этом голову.
Я думал уменьшить масштаб головы до нуля только для камеры VR, чтобы зеркала и другие камеры все еще видели голову.
Я уже пробовал все виды различных методов, включая Update, LateUpdate, OnPreCull. Некоторые из них фактически уменьшают голову, но затем для каждой камеры в сцене, а не только для той, которую я хочу.
private void OnPreRender()
{
Original = head.localScale;
head.localScale = Vector3.zero;
}
private void OnPostRender()
{
head.localScale = Original;
}
Я ожидаю, что голова масштабируется до 0 (ничего), но единственное, что происходит, - это то, что дочерние объекты кости перемещаются в уменьшенное положение, но на самом деле не масштабируются.
Edit: После дальнейшего тестирования я заметил, что gameObject.SetActive работает как положено. Весь аватар становится невидимым только для этой камеры с прикрепленным сценарием. Масштабирование, похоже, не работает. Я предполагаю, что для масштабирования может потребоваться больше кадров для обработки. И когда функция рендеринга выполняется, она только на полпути масштабируется.