allowRotation в SceneKit?
Как я могу запретить вращение узла в SceneKit?
Например, я хочу, чтобы модель (конус) была динамичной, прыгающей и летающей, но всегда вертикально ориентированной?
Я пытался исправить это, как в демонстрационной версии Apple, это плохое решение. Также я попробовал ниже код, но модель просто медленно и глючно падает
- (void)renderer:(id<SCNSceneRenderer>)aRenderer didSimulatePhysicsAtTime:(NSTimeInterval)time{
_node.rotation = SCNVector4Make(0, 0, 0, 0);
//[_node.physicsBody resetTransform]; // - tried this too
}
... и, наконец, я не нашел "allowRotation=NO" в руководствах к сценическому комплекту.
4 ответа
Вместо логического allowsRotation
Отметьте, как в SpriteKit, SceneKit позволяет вам выбирать, в каких направлениях разрешено поворачивать тело и на сколько. Увидеть angularVelocityFactor
имущество.
Вероятно, это лучшая идея, чем переключение массы между различными значениями - этот подход выглядит так, как будто это может быть непреднамеренное поведение, поэтому вы можете не захотеть полагаться на него.
Если вы хотите смешать физическое моделирование и ручное преобразование, обязательно используйте "kinematicBody", а не "dynamicBody".
Ахаха, я нашел ошибку, решающую эту проблему (но это ошибка, поэтому она странная)
- создать узел
- установить массу =1
- добавить узел в сцену
- установить массу =0 - это делает его статичным и неподвижным, но...
- установить массу =1 - это делает его динамичным, прыгает и падает, но с фиксированным вращением!
iOS 8.0.2 iPad mini