godot 像素平臺游戲1 創(chuàng)建tile和character
視頻位置
https://www.youtube.com/watch?v=f3WGFwCduY0&list=PL9FzW-m48fn1iR6WL4mjXtGi8P4TaPIAp&index=53&ab_channel=HeartBeast
資源位置
https://kenney.nl/assets/pixel-platformer
一、資源導入
????在游戲中,texture的大小并不一定和實際想顯示的相關聯(lián),尤其是3D游戲普及后,圖片基本上默認為線性采樣,所以第一件事就是設置出像素顯示的渲染參數(shù)。
????1、預設導入2D

????在godot的2D渲染管道,是沒有vector3,全部使用vector2,所以選擇2D,godot會默認為像素渲染,不會開啟線性采樣。
????把下載的資源packed的導入進去。
????

????2、設置viewport
????進入project settings

????打開專業(yè)設置
????把viewport設置為320*180

viewport是會在渲染管道默認渲染320*180的輸出整列,超過的全部砍掉不渲染。和widow width不一樣。
? ? 3、隨便創(chuàng)建一個tscn,取名教world
????給他創(chuàng)建一個node2D節(jié)點(空的沒法保存)

????運行,得到一個超級小的窗口,4k顯示器,這個platform窗口還沒半個巴掌大。

????4、設置窗口大小,和拉升模式

????tips:stretch 拉升
????viewport顧名思義就是設置為2D輸出。
????5、拖入tile-packed

????把圖片拖入主窗口,會自動創(chuàng)建sprite2D,運行就可以看到像素模式的顯示了。
????檢測完成后,刪除這個sprite2D。
????
????6、這里推薦5、1、2、3、4的順序進行操作。
????先看完在操作,也就不會做一步忘一步。
二、創(chuàng)建tile
????1、創(chuàng)建一個staticbody,靜態(tài)角色
????

????staticbody,表示他不會經(jīng)常動,他的vertex頂點坐標,會被打包放到顯存中的static_mem中,這也不代表他不能動,修改顯存的時間成本很高。
????要創(chuàng)建動態(tài)它的子類有一個可動靜態(tài)體

????因為顯存中也有會偶爾修改顯存的專屬顯存,這可以用來創(chuàng)建移動的平臺。
????如果每幀都得改變vertex的話。就保存到rigidbody里面。
????詳細情況去閱讀opengl中buffer操作的細節(jié)。用不到半小時。
????
????2、給staticbody創(chuàng)建sprite和collsion

????其中staticbody會表示sprite的vertex不會經(jīng)常變動,會放到基本不修改的顯存的位置保存。
????collision會在物理碰撞中添加一個碰撞體。具體參考godot的開源代碼,因為這玩意沒有直接套用常用的2d碰撞體,而是自己改了改。
????實際上staticbody在編程上面之屬于node的一個參數(shù),godot把它設置為專門的node子類,更加直觀,非常棒。
????3、給sprite2D設置為tile
????????拖進去

????打開region
????

????打開grid snap 網(wǎng)格切割,每個網(wǎng)格間距為18*18,網(wǎng)格與網(wǎng)格之間的偏移為0,網(wǎng)格開始的偏移為0.

? ?????打開scene的gird,設置為9*9,這樣可以有吸附功能,非常的爽

????????把collision設置為方形的

????適當調(diào)整下

????這里顯示的碰撞是半透明的在上面,因為編輯器的渲染是先來在下面的模式

????如果看不到collisionshape,把它collisionshape放到sprite下面就好了。
????
????4、把scene保存了。

????????5、把它拖到world試一試,ctrl+D就是創(chuàng)建副本,創(chuàng)建多個
????

? ? 三、創(chuàng)建character
????character(扮演角色)
????1、創(chuàng)建character

? ? tips:collisionobject表示的是用來會產(chǎn)生碰撞的物體,并不代表他有碰撞的功能,這是godot的門檻,就好比“我心理特征是女性,但是我沒有孕育生命的器官,而且也沒有長一根棒子,你需要給我添加一個,如果不添加那我就不做了唄”。
????這里的character只是個名字,代表未來分配到哪里,就像剛剛上大學的大一新生一樣,說的是清華大學,實際上還沒有清華大學大四畢業(yè)生的能力,需要給配教授。
????2、加上animatedsprite和collision

????3、創(chuàng)建animation

????點一下,就會出一個ui

簡單科普

? ? ? ? L1添加動畫的
????????L2動畫播放控制
????????L3,第一個為導入文件夾內(nèi)的素材,比如拆封過的sprite,第二個為導入整體tile
????????L4插入空白幀
????????L5左右移動幀
????????Idle是我已經(jīng)改了名字的,翻譯就是休息。
????????4、導入素材


橫著9個,豎著3個

選擇3-1導入,可以多選。
????5、修改碰撞體

????sprite擋住了collision
????6、保存為player1,拖入world

????7、運行

????懸空的,因為沒有重力。
? ? rigidbody是自帶重力的,character不僅僅可以用到platform游戲。還會用在2D平面游戲,如果這時候有重力,會往下掉。
????
????四、給character加入重力
????????1、創(chuàng)建腳本

????2、godot會自動給你寫代碼

????3、現(xiàn)在已經(jīng)可以正常跳躍和移動了

總結(jié):
? ? 基本就是C語言寫第一個游戲的引擎版本。簡單快捷,非常好理解。
????如果要學godot,得先看一遍c語言寫游戲,和了解opengl的基本概念。甚至不需要實際操作。
????是我非常推薦獨立工作室,而且是高中生自學的游戲引擎。