2015-01-04 1 views
2

Я пытаюсь добавить тип «уведомления» над трехмерным представлением, которое следует за ним, и если камера вращается или SCNNode вращается, это представление всегда остается в поиске фронт, это «дорого» делать вычисления и делать плоский 3D и вращать его каждый раз, когда некоторые из родителей вращаются, или камера, и я не хочу добавлять UIView во все, что следует за 3D xyz, потому что я хотите, чтобы он взаимодействовал с 3D-сортировкой глубин.Как добавить 2D-вид внутри 3D-SCNNode в наборе сцен

Вот пример того, что я хочу добиться:

Example

Это вид, что не вращается с его родителями, как я этого добиться?

Спасибо заранее!

+1

так что в основном вы поворачиваете баннер в направлении, противоположном направлению его родителя (всегда перед камерой), сделано. Почему это должно быть слишком дорого? – LearnCocos2D

+0

@ LearnCocos2D Это игра, в которой задействованы тонны узлов, будет много фотов, которые будут двигаться, только чтобы повернуть баннеры, и вы свободны от поворота камеры, поэтому будет много расчетов. –

+0

вы можете использовать модификаторы шейдеров для этого, и если вы работаете в пространстве просмотра (система координат камеры), все становится простым. Вы можете искать «щит для рекламных щитов» в Интернете. – mnuages

ответ

3

Я нашел способ сделать это, это очень просто:

SCNLookAtConstraint *constraint = [SCNLookAtConstraint lookAtConstraintWithTarget:cameraNode]; 
constraint.gimbalLockEnabled = YES; 
nodeA.constraints = @[constraint]; 

Это сделает узла А всегда смотреть на камеру и я установил gimbalLockEnabled = YES поэтому он не вращается причудливо.

Надеется, что это помогает кто-то там, он спас мою игру :-)

+1

Хорошее творческое использование 'SCNLookAtConstraint'! – rickster

+0

Похоже, что он смотрит в сторону, а не вперед :( –

Смежные вопросы