SceneKit_入門01_旋轉(zhuǎn)人物
SceneKit_入門02_如何創(chuàng)建工程
SceneKit_入門03_節(jié)點
SceneKit_入門04_燈光
SceneKit_入門05_照相機
SceneKit_入門06_行為動畫
SceneKit_入門07_幾何體
SceneKit_入門08_材質(zhì)
SceneKit_入門09_物理身體
SceneKit_入門10_物理世界
SceneKit_入門11_粒子系統(tǒng)
SceneKit_入門12_物理行為
SceneKit_入門13_骨骼動畫
SceneKit_中級01_模型之間的過渡動畫
SceneKit_中級02_SCNView 詳細講解
SceneKit_中級03_切換照相機視角
SceneKit_中級04_約束的使用
SceneKit_中級05_力的使用
SceneKit_中級06_場景的切換
SceneKit_中級07_動態(tài)修改屬性
SceneKit_中級08_陰影詳解
SceneKit_中級09_碰撞檢測
SceneKit_中級10_濾鏡效果制作
SceneKit_中級11_動畫事件
SceneKit_高級01_GLSL
SceneKit_高級02_粒子系統(tǒng)深入研究
SceneKit_高級03_自定義力
SceneKit_高級04_自定義場景過渡效果
SceneKit_高級05 檢測手勢點擊到節(jié)點
SceneKit_高級06_加載頂點、紋理、法線坐標
SceneKit_高級07_SCNProgram用法探究
SceneKit_高級08_天空盒子制作
SceneKit_高級09_霧效果
SceneKit_大神01_掉落的文字
SceneKit_大神02_彈幕來襲
SceneKit_大神03_navigationbar上的3D文字
學(xué)習(xí)目標
理解游戲場景和節(jié)點的概念
你必須知道的概念
場景
簡單的說逗宁,就是把人物依沮,地圖煞肾,道具等放在一個空間里,組成一個大的環(huán)境,這個大的環(huán)境就被稱為場景!
節(jié)點
在SceneKit 節(jié)點是個抽象的概念,節(jié)是個看不見,摸不到的東西条辟,沒有幾何形狀,但是它有位置冀偶,以及自身坐標系鬓梅。通俗的講,在場景中創(chuàng)建一個添加節(jié)點后,你就可以在這個節(jié)點上放我們游戲元素了横缔,比如人物模型铺遂,燈光,攝像機等等!
節(jié)點上可以添加節(jié)點的,每個節(jié)點都有自身坐標系茎刚。如圖襟锐,我們把節(jié)點2添加到節(jié)點1上去。
實戰(zhàn)目標
1.掌握如何添加節(jié)點到場景中
2.給節(jié)點綁定幾何物體
3.給節(jié)點添加節(jié)點
開始吧
- 第一步.創(chuàng)建工程
我們已經(jīng)完成了創(chuàng)建工程的任務(wù),有的人就問了,你不是要將SceneKit 游戲開發(fā)膛锭,怎么創(chuàng)建的是應(yīng)用工程,往下看,就這么任性!
- 第二步粮坞,添加我們的游戲框架到我們的控制器ViewController 中
到這里,準備工作已經(jīng)全部做完,開始敲代碼啦!
- 第三步:創(chuàng)建一個游戲引擎專屬View視圖(SCNView)
@property(nonatomic,strong)SCNView *gameView; // 設(shè)置一個引用屬性
- (void)addSCNView{
// 1.創(chuàng)建一個邊長為300 的視圖初狰,放在屏幕中心
self.gameView = [[SCNView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
self.gameView.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
// 2.設(shè)置背景顏色為黑色
self.gameView.backgroundColor = [UIColor blackColor];
// 3.添加到父視圖中去
[self.view addSubview:self.gameView];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self addSCNView];
}
此刻運行一下程序結(jié)果如下圖
- 第四步.添加場景
-(void)createScene{
SCNScene *scene = [SCNScene scene];
self.gameView.scene = scene;
}
此時莫杈,如果你運行程序,就和上面的效果一樣奢入,沒有變化筝闹,因為我們的場景中什么都沒有。
- 第五步.添加節(jié)點
// 創(chuàng)建節(jié)點腥光,添加到scene的根節(jié)點上
SCNNode *node = [SCNNode node];
[scene.rootNode addChildNode:node];
提示:
scene.rootNode 有些朋友很好奇关顷,為什么Scene也有一個節(jié)點,上面說個武福,沒有節(jié)點你沒法放游戲元素上去议双,并且它有自身坐標系,這就是為什么scene也有一個根節(jié)點的原因捉片。
此時你運行程序也和上面結(jié)果一樣,因為節(jié)點沒有幾何形狀!
- 第六步.給節(jié)點綁定一個幾何形狀的物體
// 創(chuàng)建一個球體幾何綁定到節(jié)點上去
SCNSphere *sphere = [SCNSphere sphereWithRadius:0.5];
node.geometry = sphere;
運行一下
此時我們已經(jīng)完成了實戰(zhàn)任務(wù)的1和2,繼續(xù)加油!
- 第七步.給節(jié)點添加節(jié)點
// 創(chuàng)建子節(jié)點 給子節(jié)點添加幾何形狀
SCNNode *childNode = [SCNNode node];
// 設(shè)置節(jié)點的位置
childNode.position = SCNVector3Make(-0.5, 0, 1);
// 設(shè)置幾何形狀平痰,我們選擇立體字體
SCNText *text = [SCNText textWithString:@"讓學(xué)習(xí)成為一種習(xí)慣" extrusionDepth:0.03];
// 設(shè)置字體顏色
text.firstMaterial.diffuse.contents = [UIColor redColor];
// 設(shè)置字體大小
text.font = [UIFont systemFontOfSize:0.15];
// 給幾點綁定幾何物體
childNode.geometry = text;
[node addChildNode:childNode];
友情提示:
extrusionDepth 字體的深度
firstMaterial.diffuse.contents 不知道沒關(guān)系,后面會講的,單詞意思就可以理解.firstMaterial 第一個材質(zhì) diffuse 自身發(fā)散的contents內(nèi)容伍纫,我們設(shè)置為red 也可以設(shè)置圖片的!
我們用一鍵大招讓你自由旋轉(zhuǎn)物體
self.gameView.allowsCameraControl = true;
]
代碼庫,聽說經(jīng)常給人點贊都當老板了!