画面をタップすると、ボックスがフローティングから重力の影響を受けるように切り替わるシンプルなアプリを作成しようとしています。ただし、箱を空中に浮かせる方法が見つからないようです。
このコードは、問題の半分を処理します。
boxNode.physicsBody = [SCNPhysicsBody dynamicBody];
これにより、ボックスが空中から落下し、作成した床にぶつかります。SCNPhysicsBody にこれと反対のことをするものはありますか? おそらく、オブジェクトを浮かせたり、天井に向かって帆走したりしますか?
また、私はこのコードを書きました:
- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
if (myBool == false) {
myBool = true;
NSLog(@"true");
} else {
myBool = false;
NSLog(@"false");
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
// touch recognizer
UITapGestureRecognizer *screenTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:screenTap];
// create box
SCNBox *myBox = [SCNBox boxWithWidth:1.0 height:1.0 length:1.0 chamferRadius:0.1];
SCNNode *boxNode = [SCNNode nodeWithGeometry:myBox];
boxNode.position = SCNVector3Make(0.0, 0.0, 4.0);
[myScene.rootNode addChildNode:boxNode];
while (myBool == true) {
boxNode.physicsBody = [SCNPhysicsBody dynamicBody];
}
}
ただし、whileループが機能しない理由はわかりません。myBool が変更されたことを検出し、boxNode の物理を変更すると考えていましたが、そうではありません。