我們看到的遊戲畫面,都是遊戲製作者想讓我們看到的畫面。玩遊戲真正運行的邏輯則一行行代碼,他們都是不可見的。這也是為什麼遊戲裡經常出現各種各樣的穿牆穿模bug。雖然你認為你眼睛裡的畫面不符合邏輯,但數據上,電腦認為他是符合邏輯的。
變身技能
變身。這個技能要實現起來並不難。一般製作遊戲時,我們都會給角色和裝備添加一個共同的父級。如這樣:
一般,我們操控的對象都是第二級或者第三級的Role,而Player則是下面那些子級的父級,而我們只要替換這個父級下的Role對象替換成別的模型,再給他掛上已經準備好的對應的目標邏輯就行了。遊戲裡的變身基本都是這樣實現的。
撐杆跳
角色的棍子變長應該是動畫師做的。遊戲裡,角色的裝備模型一般都是角色模型下面的子級,如上圖的WeaponPos,就是放裝備的地方。如果要讓角色跟隨武器移動,這在程序上實現起來是非常麻煩的。(簡單來說,就是父親做什麼,兒子也會跟著做什麼,但兒子做什麼,父親不會跟著做)而由動畫師來做的話就簡單許多。
動畫師做一段連續動畫,再給這段動畫需要由玩家操控的地方添加事件,然後再通過按鍵輸入,來確定是否播放下一段動畫,播放的話執行什麼邏輯,不播放的話執行什麼邏輯。
另外,他攻擊的時候旁邊有一個透明特效。那個特效在棒子還沒有揮下去的時候就出現了,而那個特效棒子的長度是固定的,而角色手中的棒子打完就恢復了,所以那特效的攻擊距離應該才是真正的攻擊距離。
轉圈圈
轉圈圈。這個應該是在周圍形成一個空氣牆。在遊戲製作時,製作者通常會給每個對象添加不同的層級。比如我們會給玩家添加玩家層級,怪物添加怪物層級,子彈添加子彈層級。
玩家層、怪物層、子彈層
然後,我們可以給這個空氣牆添加這麼一個邏輯,當處於怪物或子彈層級的目標與空氣牆發生互動時,我們可以分別進行處理,是讓怪物層級的目標被攻擊,還是讓子彈層級的目標被銷燬。而不屬於目標層級的物體,則直接無視空氣牆。
不管什麼彈道攻擊,生成的都是這個白光
一般的FPS遊戲裡的彈痕,都是子彈被銷燬時留下的特效。這個轉棍子技能在成功後秤生成的光箭和那個白色的閃光特效,應該也是那個盾在檢測到有物體碰撞時生成的,而不是原本的箭。相應的效果,在英雄聯盟的亞索和布隆上也能看到,只要有彈道攻擊擊中他們的盾牌,那個盾牌生成的都是同一種被擊中的特效。
畫圈圈
畫圈圈。和前者的轉圈圈類似,也是生成空氣牆。不過他們對不同對象的處理是不一樣的。一個是打斷原本移動動畫,播放擊退動畫,一個是進行攻擊邏輯,讓對方播放受傷動畫。
影分身
影分身。這個很簡單,就是在周圍生成一堆角色模型,然後給他們掛載了簡單的AI。
定身
鐵頭功
定身和鐵頭功。這兩個技能和英雄聯盟裡的沙漏是一樣的,角色的行為都是一段段動畫,而他們則是讓目標物體的動畫暫停,暫停時免疫傷害或傷害加倍。暫停完是繼續播放之前的動畫還是播放新的動畫。這方面,應該要數塞爾達玩的最6了。
想起來容易做起來難。要實現遊戲裡的技能效果有很多方式,我這裡只是列舉了一種,而且只是讓技能看起來像個技能而已,像什麼傷害計算屬性剋制之類的,牽扯到那些東西會更加複雜。
#遊戲知識分享官##遊戲知識雜談##單機遊戲##黑神話:悟空#