2016-05-10 6 views
0

В MaxScript, как бы определить, был ли объект перемещен с событием? Я попытался преобразовать обнаружения, но это не работает:Обратный звонок, когда obj меняет позицию?

when transform $Body do (
    print"moved" 
) 

Он также не может заморозить ▽ или программу, так как он должен обнаружить, когда объект активно движется.

+0

Не привязывайте путь к объекту сцены с помощью $ Body. –

+0

Я жестко закодировал его, потому что объект всегда будет называться $ Body – Jacob

ответ

1

Ваше забытое ключевое слово changes. Правильный синтаксис:

when transform $Body changes do (
    print "moved" 
) 
+0

По-прежнему ничего не делает .. – Jacob

+0

Я вижу, что преобразование предназначено для изменения размера объекта, а не для изменения позиции. Мне нужно определить, когда меняется положение. – Jacob

+1

Это для любых изменений в преобразовании объекта, как указано в ссылке, _Signaled, когда преобразование объекта изменяется, например, путем перемещения, поворота или масштабирования. _ Каким образом вы меняете позицию? – Swordslayer

1

Узел, уже имеющий ключевую структуру, не запускает этот обработчик, а не управляется пользователем, а системой.

Это не будет срабатывать при нажатии кнопки воспроизведения в трек-панели.

Не зная точно, что вы намерены делать, сложно рекомендовать альтернативу.

Если вы хотите сообщить позицию или преобразовать информацию определенного узла при изменении трекбана/текущего времени, вы можете использовать registerTimeCallback и unRegisterTimeCallback.

fn reportObject = 
(
    print $Box001.pos 
) 
registerTimeCallback reportObject 

Это будет срабатывать при использовании кнопки воспроизведения или при стирании временной шкалы. Прочтите документацию относительно timecallbacks, поскольку у них есть определенные правила.

Надеюсь, это поможет.

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

  • Нет связанных вопросов^_^