Występuje tutaj błąd z mostem Obj-c/Swift.
Podczas oczekiwania na rozwiązanie, można obejść ten problem, tworząc tymczasowy most dla siebie:
Dodaj następujące klasy:
PhysWorldBridge.h
#import <Foundation/Foundation.h>
#import <SceneKit/SceneKit.h>//
@interface PhysWorldBridge : NSObject
- (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed;
- (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity;
@end
PhysWorldBridge.m
#import "PhysWorldBridge.h"
@implementation PhysWorldBridge
- (id) init
{
if (self = [super init])
{
}
return self;
}
- (void) physicsWorldSpeed:(SCNScene *) scene withSpeed:(float) speed
{
scene.physicsWorld.speed = speed;
}
- (void) physicsGravity:(SCNScene *) scene withGravity:(SCNVector3) gravity
{
scene.physicsWorld.gravity = gravity;
}
@end
Xcode powinien monitować o utworzenie XXX-Bridging-Header.h
po dodaniu pierwszego pliku-c. Niech utworzy ten plik.
Dodaj importu dla klasy do „XXX-pomostowe header.h":
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//
#import "PhysWorldBridge.h"
Teraz można korzystać z tej (hacky) Most do ustawienia właściwości od SWIFT:
//scene.physicsWorld.speed = 2.0
// CAN'T USE ABOVE OR LINKER ERROR
let bridge = PhysWorldBridge();
bridge.physicsWorldSpeed(scene, withSpeed: 2.0);
//This call bridges properly
//So would the gravity one:
bridge.physicsGravity(scene, withGravity: SCNVector3Make(0, -90.81, 0));
Czy używasz Xcode 6 beta na OS X 10.9? Fizyka to nowa funkcja w Scene Kit na 10.10. – rickster
Ahh ... Tak. Używam xcode beta6 na osxie 10.9 –
Używam jednak symulatora ios 8. Nie sądziłem, że os spowodowałby ten problem, ponieważ oprogramowanie jest dla ios. –