Размер физического тела не меняется при изменении размера SKSpriteNode в методе Touch move

Я пытаюсь создать пружинную пусковую установку, в которой при перемещении касания по сцене пружина будет сворачиваться настолько, насколько касание перетаскивается вниз, а затем запускать элемент над пружиной методом касания. Для этого я изменил размер и положение SKSpriteNode в методе сенсорного перемещения как -

launcher.position               =   CGPointMake(frame.size.width*0.97, launcher.position.y-1)
launcher.size                   =   CGSizeMake(frame.size.width*0.05, launcher.frame.size.height-2)

Но физическое тело SKSpriteNode не меняется, оно выглядит так: введите здесь описание изображения

Пожалуйста, помогите.. И если изменить физическое тело SKSpriteNode, то оно слишком сильно отстает на устройстве..

let springTexture    =   SKTexture(imageNamed: "spring-wire")
launcher.physicsBody = SKPhysicsBody(texture: springTexture, size: launcher.size)
launcher.physicsBody?.dynamic = false

Есть ли способ изменить размер физического тела после его создания один раз?


person Viper    schedule 11.02.2015    source источник
comment
физические тела не масштабируются, после создания тело сохраняет размер своей формы - если вы хотите изменить его, вам нужно создать новое тело   -  person LearnCocos2D    schedule 13.02.2015
comment
Физическое тело на самом деле масштабируется. Я перепроверил его, установив self.view?.showsPhysics = true, и ясно видно, что его масштабирование.   -  person Viper    schedule 13.02.2015


Ответы (1)


Я исправил это, изменив yScale SKSpriteNode вместо изменения его размера в методе touchesMoved.

launcher.yScale =   launcher.yScale-0.008
launcher.position  =   CGPointMake(frame.size.width*0.97, launcher.size.height/2)

Я не знаю, правильный это подход или нет, но благодаря этому физическому телу SKSpriteNode меняется соответственно.

person Viper    schedule 11.02.2015