2014-10-08 4 views
1

Как я могу запретить вращение узла в SceneKit?allowRotation в SceneKit?

Для примера, я хочу, чтобы модель (конус) была динамичной, прыгающей и летающей, но всегда вертикально ориентированной?

Я пробовал исправить это, как в демонстрации автомобиля Apple, это плохое решение. Кроме того, я попытался ниже код, но модель только медленно и Glitchy падает

- (void)renderer:(id<SCNSceneRenderer>)aRenderer didSimulatePhysicsAtTime:(NSTimeInterval)time{ 
    _node.rotation = SCNVector4Make(0, 0, 0, 0); 
    //[_node.physicsBody resetTransform]; // - tried this too 
} 

... и, наконец, я не нашел в «allowRotation = NO» scenekit руководства.

ответ

5

Вместо флага Boolean allowsRotation как в SpriteKit, SceneKit позволяет выбрать, какие направления тело разрешено вращаться и сколько. См. Свойство angularVelocityFactor.

Это, вероятно, лучшая идея, чем переключение массы между разными значениями - этот подход выглядит так, как будто это может быть непреднамеренное поведение, поэтому вы не можете полагаться на него.

+0

Перемещающаяся масса просто шутит. angularVelocityFactor хорошо работает, спасибо – djdance

0

Если вы хотите смешивать физическое моделирование и руководство преобразует, обязательно используйте «кинематический приемник», а не «dynamicBody».

+0

нет, не в ручном режиме?. – djdance

0

Ахаха, я нашел ошибку, решая эту проблему (но это ошибка, так что это странно)

  1. Создание узла
  2. набор массы = 1
  3. добавить узел к сцене
  4. set mass = 0 - это делает его неподвижным и неподвижным, но ...
  5. set mass = 1 - это делает его динамичным, прыгающим и падающим, но с фиксированным вращением!

IOS 8.0.2 IPad мини

-1

Простое решение:

node.physicsBody .allowsRotation = ложь