好像復(fù)雜點(diǎn)的LuaSTG教程3.1:3D背景
(這些玩意都是我看教程懂的,如果想要更詳細(xì)的教程還是建議加群)
心心念念心心念念.......
終于要寫這個(gè)東西了,真是激動(dòng)呢111()^&*%^#$
好了廢話不多說開始
這一期我們要用代碼(?)開始講了
新建一個(gè).lua文件,輸入XXX(隨便什么名字)=Class(object)

這就有點(diǎn)像編輯器里定義了一個(gè)obj之類的

然后,類似的,在你寫的那下面寫上這些東西:

我覺得你們應(yīng)該也看得懂(
然后開始寫吧!
LuaSTG內(nèi)置了3個(gè)坐標(biāo)系:world,3d,ui
world渲染的就是正常的游戲畫面(怎么說....就是打飛機(jī)的畫面(),渲染的東西永遠(yuǎn)在ui的下面(?)
ui渲染的就是打飛機(jī)旁邊部分的ui
3d就是3d,有什么好說的
上一次講了render4V,這個(gè)東西就是拿來制作3D背景的(RenderTexture也可以)
用法可以去看上一次的專欄
那么首先呢,我們想要在init 里寫一堆Set3D
Set3D('eye',0,2,1)
Set3D('at',0,0,1)
Set3D('up',0,3,1)
Set3D('z',0.1,24)
Set3D('fovy',0.7)
Set3D('fog',5,10,Color(255,255,255,255))
哇這是什么東西啊看起來好復(fù)雜啊
且聽我慢慢道來(
eye,就是攝像頭的位置,下面三個(gè)參數(shù)為x,y,z
at,就是攝像頭看向的位置,也是xyz
up,就是攝像頭頭頂?shù)奈恢?也是xyz
(看的方向和攝像頭的位置都是由你自己決定的,我習(xí)慣以z軸為前方)
z就是....嗯...'切割的長度'?大概就是如果你渲染的圖片的一部分的z超過了這個(gè)范圍,那部分就會(huì)被切割掉
fovy就是,可以理解為視角...想象一下mc速度效果視角變大,緩慢效果視角變小(((
值小于圓周率(3.14就行啦)大于0
fog是霧的效果,上面的'5,10'是霧的范圍,從5開始到10越來越濃,Color是lstg給的,四個(gè)參數(shù)分別為透明度(Alpha),紅(Red),綠(Green),綠(Blue)
還要在init里寫上這一句:background.init(self,false) 用來設(shè)置背景的默認(rèn)屬性
上面不是講了三個(gè)坐標(biāo)系嗎,那么怎么在這三個(gè)坐標(biāo)系中切換呢?
這就要用到SetViewMode了
在render下面寫SetViewMode('3d') (括號(hào)可以省略)
然后呢,在可以在這下面寫Render4V了
寫成這個(gè)樣子,然后在試試打開編輯器,用general里的patch那個(gè).lua文件,然后在關(guān)卡里New(XXX(上文中你起的名字))試試?

en,運(yùn)行后就會(huì)出現(xiàn)一個(gè)

Render4V('white',-0.5,0,1.5
,0.5,0,1.5
,0.5,0,0.5
,-0.5,0,0.5)
好了,那么我們多渲染幾張,然后換個(gè)視角?


換個(gè)貼圖+多渲染幾張:

然后怎么讓它動(dòng)起來呢?
看東方原作的背景,是不是攝像頭一直往前動(dòng),然后渲染的很長很長?
那要z裁剪有什么用(
實(shí)際上是背景在倒退,然后倒退了一段長度就'瞬移'回來
具體做法是這樣:

效果:

差不多就是這樣(