2015-06-07 2 views
1

Я хочу, чтобы два SKSpriteNode s были в одинаковом положении и статичны друг другу. Сначала я попытался установить это в функции update().Не разрешено использовать свойство observer

sprite1.position = sprite2.position 

Это дает sprite1 положение sprite2 один кадр раньше. При высоких скоростях (изменения в позиции sprite2) становится ясно, что они не являются статичными друг для друга. Затем я попытался с помощью свойства наблюдателя:

sprite2.position = sprite2Position{ didSet{ sprite1.position = sprite2.position } } 

Я не позволил сделать это. Xcode говорит, что мне нужно separate multiple statements on line.

+0

Почему не просто установить 'sprite1.position = sprite2.position' в didFinishUpdate()' 'метода (который вызывается после физики и SKActions оцениваются, но перед кадром нарисован) – Okapi

+0

Спасибо, что решил проблему. Я не знал, что didFinishUpdate() существует. – ecoguy

+1

Если вы хотите, чтобы спрайты были связаны, почему бы не добавить их в качестве дочернего узла другого? – ABakerSmith

ответ

1

Чтобы убедиться, что спрайты имеют одинаковую позицию, задайте положение после того, как физика и модели SKActions были смоделированы. Делайте это в didFinishUpdate() методе SKScene:

override func didFinishUpdate() { 
    sprite1.position = sprite2.position 
} 
Смежные вопросы