Я создаю SKSpriteNode
в didBeginContact
метод с местом контакта:SKSPriteNode изменение положения в 0,0 без причины
CommonBox *boxTwo = [[CommonBox alloc] initWithTexture:[self.mainAtlas textureNamed:@"box07"]];
boxTwo.name = @"regularBox";
boxTwo.position = contact.contactPoint;
[self addChild:boxTwo];
Положения является правильным здесь. Затем вызывается метод обновления, и позиция поля волшебным образом изменяется на 0,0 при запуске метода обновления, прежде чем выполняется какой-либо код. Почему это? Между этими двумя событиями не выполняется никакой другой код. Это сводит меня с ума. Я попытался удалить все конфликтующие и контактные битовые маски из этого объекта, но в любом случае он меняет нули. Объект является законным и так далее.
EDIT: если я удалю физическое тело с этого узла, я получу желаемое положение. Но как установить свою позицию узла, если у него есть физическое тело?
Я просто столкнулся с этим сам и подозреваю, что это ошибка, поскольку это происходит только внутри метода обновления. При создании объектов во время настройки сцены не имеет значения, в каком порядке я устанавливаю позицию. Вы отправили радар с Apple? – macshome
Я столкнулся с этим, так как я создал spritenode в качестве подкласса, и я создал также как SKspritenode внутри сцены, когда я запустил узел подкласса подкласса вне функции init сцены, позиция равна 0,0, когда я запускаю SKspritenode созданный в Сцене, это нормально, это не имеет никакого смысла ????? – TALAA
Спасибо, мне жаль, что я не нашел это раньше. В моем случае это кажется непоследовательным. Иногда мои подклассы SKSpriteNodes могут задавать позиции после того, как физическое тело было создано, а другие нет. На данный момент я не вижу никаких различий между теми, кто работает, и теми, кто этого не делает, и будет мелить это как вероятную ошибку с каркасом. – Koop