參考Cocos文檔與demo
第一人稱視角往往保持主角始終在屏幕中心
處理人物走動的時候,就需要保持人物的位置不變,而改變其他場景內相對移動的元素
通常是地形,地形上的建築/玩家以及其他子節點等等
這樣一來,人物移動的時候,每幀需要重新計算的矩陣很多(所有相對移動的元素)
而若使用camera組件,則可以僅僅移動人物和camera即可,這樣大大減小了需要重新計算的矩陣數
在cocos的demo里面可以看到
若不使用攝像機,移動全部相對運動的元素(9600個)的根節點
效率大致如下
使用了camera之后,這里僅僅移動camera節點,每幀耗時明顯下降(體現在Frame time和Game Logic)
camera的作用原理如下
當camera.active == true時
camera.Targets屬性中的節點以camera相對屬性進行渲染
若camera.active == false則其中的節點仍使用場景的默認camera進行渲染
camera.Targets以外的節點正常按照默認camera進行渲染
比如例子中,綠色球球的根節點在camera的target內
camera的移動只會影響綠色球球的渲染,不會影響按鈕UI的渲染
假設有人物和大地圖10000*10000
第一人稱視角只需要把人物和camera的坐標設置為(5000 , 0)就可以實現移動(camera的target中包含了人物與大地圖)
如圖
camera中的target包含了綠色球球的root和主角sheep
設置camera和sheep的position實現了主角和camera同時移動到底圖邊緣