Я новичок в Godot, поэтому могу ошибаться, но думаю, это потому, что ключевое слово .new () - это языковая функция для загрузки отдельных классов / узлов,
, тогда как .instance () дополнительная функция движка, которая берет упакованную сцену, которая представляет собой комбинацию множества классов / узлов, и восстанавливает их относительное положение в дереве, присоединяет скрипты и ресурсы и т. д. c
Так что, если ваш игрок Сцена tscn, вы бы сделали что-то вроде:
var player = load("res://etc/Player.tscn").instance()
get_tree().root.add_child(player)
player.global_transform = etc ...
, который загрузит узел root в Player.tscn и всех его дочерних элементов (жестких тел, collidershapes et c) в Дерево сцены, установите их относительное положение, соедините сценарии и что у вас есть
Или, если ваш Player является классом или GDScript, вы можете сделать
var player = Player.new()
get_tree().root.add_child(player)
player.global_transform = etc ...
Что бы добавить объект узла root с одним узлом только в дереве сцены, но не дочерние элементы
После того, как он находится в дереве сцены и запущен _ready (), вы можете создавать экземпляры и присоединять узлы дочерних компонентов (.new ()> parent.add_child ()> установить преобразование) из самого скрипта