您從CMAttitude獲得的四元數似乎有缺陷。在Unity中,我可以獲得iPhone的旋轉,將其應用於3D對象,並且在旋轉iPhone時對象將旋轉。在Xcode中,它似乎有所不同。將iPhone旋轉應用於3d對象
要建立一個快速的測試項目,請按照下列步驟操作:
在Xcode中,創建一個從iOS的一個新項目>遊戲模板(這給了我們一個3D物體上測試)。
在
GameViewController.h
添加#import <CoreMotion/CoreMotion.h>
和@property (strong, nonatomic) CMMotionManager *motionManager;
在
GameViewController.m
在線取出動畫:46[ship runAction: etc..
並且不允許相機控制在線路:55(不是必需的)在
GameViewController.m
添加到的viewDidLoad中self.motionManager = [[CMMotionManager alloc] init]; self.motionManager.deviceMotionUpdateInterval = .1; [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) { CMQuaternion q = motion.attitude.quaternion; ship.rotation = SCNVector4Make(q.x, q.y, q.z, q.w); if(error){ NSLog(@"%@", error); } } ];
底部。爲了避免煩惱,在項目>目標>項目名稱>部署信息>設備的方向,只允許人像(或只鎖定你的iPhone的旋轉)
當我建立這個,我的iPhone的3D對象(飛機)不跟隨手機的旋轉。投影類作品。
這是打算?我如何使用這個錯誤?
使用'ship.orientation'而不是'ship.rotation'解決了這個問題。感謝@orangenkopf – Chris