Изменение размера кости в OnPreRender не изменяет размер для текущей камеры в Unity - PullRequest
0 голосов
/ 11 июля 2019

Я создаю собственную систему аватаров для моей игры 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 работает как положено. Весь аватар становится невидимым только для этой камеры с прикрепленным сценарием. Масштабирование, похоже, не работает. Я предполагаю, что для масштабирования может потребоваться больше кадров для обработки. И когда функция рендеринга выполняется, она только на полпути масштабируется.

1 Ответ

0 голосов
/ 11 июля 2019

Это не эффективный способ сделать это. Вам было бы гораздо лучше положить руки на другой слой и отключить выборку этого слоя на виртуальной камере. Таким образом, вам не нужно прикасаться к преобразованиям, и это на один менее собственный -> управляемый вызов единства (слои обрабатываются на собственной стороне)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...