0

私は SceneKit に慣れていないので、次のことについてあなたの助けを借りることができます: 私は 2 つの SCNViews を持っています - 標準の allowCameraControl オプションを有効にしてユーザーが操作できるユーザーのシーンを示す大きなもの (skView) - 別の小さなもの (これは、ユーザーが大きな SCNView で実行するカメラ ナビゲーションをミラーリングしたい座標クロスを示しています。

座標クロス SCNView

両方の SCNViews を保持する ViewController を SCNRendererDelegate にし、レンダラーでクロスの向きを更新することで実装しました: updateAtTime: メソッドは次のようになります。

- (void)renderer:(id<SCNSceneRenderer>)renderer updateAtTime:(NSTimeInterval)time {

    [self.coordinateCrossView.scene.rootNode childNodeWithName:@"cross" recursively:YES].orientation = self.skView.pointOfView.orientation;
    [self.coordinateCrossView setNeedsDisplay];
}

ここまでは順調ですね。ただし、これは、ユーザーが画面上で大きな SCNView を指で操作している場合にのみ機能します。指が画面から離れたときのスワイプ ジェスチャの後、大きな SCNView 内のオブジェクトは少し回転し続けますが、座標クロスは更新されません。この動作が pointOfView.orientation の変更によってキャプチャされない理由はありますか?

4

1 に答える 1

0

私は問題が何であるかを知りました.小さな座標クロスビューは継続的に更新されていなかったため、座標クロスの向きが変更されても、setNeedsDisplayが呼び出されたにもかかわらず、ビューには表示されませんでした. この問題は、調整クロスビューの isPlaying プロパティを設定して強制的に更新することで修正しました。

于 2016-07-07T16:45:29.210 に答える