Ни один из этих ответов не работал для меня, поэтому я оставил код, который действительно работал. В моем случае даже после убийства процесса с помощью .kill()
и получения кода возврата .poll()
процесс не завершился.
Следуя документации subprocess.Popen
:
"... для правильной очистки хорошо выполненное приложение должно убить дочерний процесс и завершить связь ... »
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
В моем случае я не получил
proc.communicate()
после вызоваproc.kill()
. Это очищает процесс stdin, stdout ... и завершает процесс.
В строке 26 вы передаете постоянный вектор в applyForce
. Этот метод принимает вектор в мировом пространстве, поэтому передача постоянного вектора означает, что вы всегда применяете силу в том же направлении - если вы хотите, чтобы направление, основанное на направлении, которое указывает камера или что-то еще, вам нужно вычислить вектор, основанный на этом направлении.
Свойство (новое) SCNNode worldFront
может оказаться полезным здесь - оно дает вам направление, указывающее узел, автоматически преобразуемое в мировое пространство, поэтому оно полезно с помощью физических методов , (Хотя вы можете его масштабировать.)