SceneKit_入門03_節點

SceneKit_入門01_旋轉人物
SceneKit_入門02_如何創建工程
SceneKit_入門03_節點
SceneKit_入門04_燈光
SceneKit_入門05_照相機
SceneKit_入門06_行為動畫
SceneKit_入門07_幾何體
SceneKit_入門08_材質
SceneKit_入門09_物理身體
SceneKit_入門10_物理世界
SceneKit_入門11_粒子系統
SceneKit_入門12_物理行為
SceneKit_入門13_骨骼動畫
SceneKit_中級01_模型之間的過渡動畫
SceneKit_中級02_SCNView 詳細講解
SceneKit_中級03_切換照相機視角
SceneKit_中級04_約束的使用
SceneKit_中級05_力的使用
SceneKit_中級06_場景的切換
SceneKit_中級07_動態修改屬性
SceneKit_中級08_陰影詳解
SceneKit_中級09_碰撞檢測
SceneKit_中級10_濾鏡效果制作
SceneKit_中級11_動畫事件
SceneKit_高級01_GLSL
SceneKit_高級02_粒子系統深入研究
SceneKit_高級03_自定義力
SceneKit_高級04_自定義場景過渡效果
SceneKit_高級05 檢測手勢點擊到節點
SceneKit_高級06_加載頂點、紋理、法線坐標
SceneKit_高級07_SCNProgram用法探究
SceneKit_高級08_天空盒子制作
SceneKit_高級09_霧效果
SceneKit_大神01_掉落的文字
SceneKit_大神02_彈幕來襲
SceneKit_大神03_navigationbar上的3D文字

讓學習成為一種習慣

學習目標

理解游戲場景和節點的概念


你必須知道的概念

概念圖

場景

簡單的說,就是把人物,地圖,道具等放在一個空間里,組成一個大的環境,這個大的環境就被稱為場景!

節點

在SceneKit 節點是個抽象的概念,節是個看不見,摸不到的東西,沒有幾何形狀,但是它有位置,以及自身坐標系。通俗的講,在場景中創建一個添加節點后,你就可以在這個節點上放我們游戲元素了,比如人物模型,燈光,攝像機等等!
節點上可以添加節點的,每個節點都有自身坐標系。如圖,我們把節點2添加到節點1上去。

實戰目標

1.掌握如何添加節點到場景中
2.給節點綁定幾何物體
3.給節點添加節點

開始吧

  • 第一步.創建工程
和創建普通工程沒啥區別
讓學習成為一種習慣

我們已經完成了創建工程的任務,有的人就問了,你不是要將SceneKit 游戲開發,怎么創建的是應用工程,往下看,就這么任性!

  • 第二步,添加我們的游戲框架到我們的控制器ViewController 中
添加游戲框架

到這里,準備工作已經全部做完,開始敲代碼啦!

  • 第三步:創建一個游戲引擎專屬View視圖(SCNView)
@property(nonatomic,strong)SCNView *gameView; // 設置一個引用屬性
 
  - (void)addSCNView{
// 1.創建一個邊長為300 的視圖,放在屏幕中心
self.gameView = [[SCNView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
self.gameView.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
// 2.設置背景顏色為黑色
self.gameView.backgroundColor = [UIColor blackColor];
// 3.添加到父視圖中去
[self.view addSubview:self.gameView];
}

- (void)viewDidLoad {
[super viewDidLoad];
[self addSCNView];
}

此刻運行一下程序結果如下圖

運行結果
  • 第四步.添加場景
-(void)createScene{
SCNScene *scene = [SCNScene scene];
self.gameView.scene = scene;
}

此時,如果你運行程序,就和上面的效果一樣,沒有變化,因為我們的場景中什么都沒有。

  • 第五步.添加節點
 // 創建節點,添加到scene的根節點上
 SCNNode *node = [SCNNode node];
 [scene.rootNode addChildNode:node];

提示:

scene.rootNode 有些朋友很好奇,為什么Scene也有一個節點,上面說個,沒有節點你沒法放游戲元素上去,并且它有自身坐標系,這就是為什么scene也有一個根節點的原因。

此時你運行程序也和上面結果一樣,因為節點沒有幾何形狀!

  • 第六步.給節點綁定一個幾何形狀的物體
 // 創建一個球體幾何綁定到節點上去
SCNSphere *sphere = [SCNSphere sphereWithRadius:0.5];
node.geometry = sphere;

運行一下

運行結果

此時我們已經完成了實戰任務的1和2,繼續加油!

  • 第七步.給節點添加節點
 // 創建子節點 給子節點添加幾何形狀
SCNNode *childNode = [SCNNode node];
// 設置節點的位置
childNode.position = SCNVector3Make(-0.5, 0, 1);
// 設置幾何形狀,我們選擇立體字體
SCNText *text = [SCNText textWithString:@"讓學習成為一種習慣" extrusionDepth:0.03];
// 設置字體顏色
text.firstMaterial.diffuse.contents = [UIColor redColor];
// 設置字體大小
text.font = [UIFont systemFontOfSize:0.15];
// 給幾點綁定幾何物體
childNode.geometry = text;
[node addChildNode:childNode];

友情提示:

extrusionDepth 字體的深度
firstMaterial.diffuse.contents 不知道沒關系,后面會講的,單詞意思就可以理解.firstMaterial 第一個材質 diffuse 自身發散的contents內容,我們設置為red 也可以設置圖片的!

我們用一鍵大招讓你自由旋轉物體

self.gameView.allowsCameraControl = true;
Scenekit_02.gif

]

代碼庫,聽說經常給人點贊都當老板了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容