У меня есть простое приложение, в котором я динамически создаю фигуру. Эта форма имеет физику, но начинается с того, что ее динамика имеет значение false (как и предполагалось).
var dot = SKSpriteNode(imageNamed: "ShapeDot.png");
override func sceneDidLoad() {
dot.name = "MyShapeDot";
dot.size = CGSize(width: 10,height: 10);
dot.position = CGPoint(x: 0, y: 0);
dot.physicsBody = SKPhysicsBody(circleOfRadius: CGFloat(dot.size.width/2))
dot.physicsBody?.isDynamic = false;
dot.physicsBody?.allowsRotation = false;
dot.physicsBody?.pinned = false;
dot.physicsBody?.affectedByGravity = true;
//add to spritekit scene
self.addChild(dot)
}
Форма успешно добавлена к .sks и контроллеру (я вижу это на экране). Затем по жесту касания я вызываю функцию для включения динамики для физического узла спрайтов.
func MyTapGesture(){
dot.physicsBody?.isDynamic = true;
}
Вызывается MyTapGesture (я отлаживал, что он срабатывает), но форма не становится Dynami c и начать использовать гравитацию ... Кто-нибудь знает, что мне не хватает ???
Я вызываю MyTapGesture из моего интерфейса Controller ... Он подключен так
let gameScene = GameScene();
@IBOutlet weak var spriteTapGestures: WKTapGestureRecognizer!
@IBAction func onSpriteTap(_ sender: Any) {
NSLog("tap")
gameScene. MyTapGesture()
}
В MyTapGesture я также пробовал печатать (точка), и он выводит следующее:
name:'MyShapeDot' texture:[<SKTexture> 'ShapeDot.png' (128 x 128)] position:{0, 0} scale:{1.00, 1.00} size:{10, 10} anchor:{0.5, 0.5} rotation:0.00
Это заставляет меня думать, что это должно работать, и я вызываю правильную ссылку на класс это привязано к объекту. Но это не работает. Если я вызываю MyTapGesture () в обновлении fun c класса SpriteKit, где была создана моя точка
override func update(_ currentTime: TimeInterval) {
MyTapGesture()
}
Это работает, и динамика обновляется! ... так что по какой-то причине мой жест касания должен вызывать неправильную ссылку или что-то в этом роде ??? Так запутано, что отладка показывает правильные данные, напечатанные для созданной мной фигуры ...