最近沉迷《Dreadnought》(中文名:無畏戰艦,B站CG鏈接),回想起作為十餘年EVE老油條的太空生涯,又萌生了做個太空遊戲的情懷,所以這一次就講講怎麼做個簡單的太空飛船的小遊戲好了。

因為不會美術(懶,當然這並不是重點...),所以求助assetstore好了,Free大法好

這裡不得不提下CGPitbull這家資源商,發布了很多不錯的科幻載具,雖然不是很喜歡這種風格的塗裝,不過已經是商店裡少有的全系列高質量資源了,贊一個。

然後我們把下好的飛船資源丟到unity里,記得搞個天空盒喲:

怎樣,是不是很帥,瞧這質感,口水……

然後來實現飛船的控制,首先看下圖,物體在三維空間里的移動有上下左右前後三個軸向的位移和旋轉:

現實里的飛船控制當然是非常複雜的,作為遊戲來說完全模擬肯定是不行的,需要根據遊戲玩法進行簡化,根據作者玩過的遊戲,有以下幾種操控類型:

固定翼飛機式控制,滑鼠控制Pitch和Yaw進行視角旋轉和目標鎖定,鍵盤控制Roll等,也是最為常見的3D飛行射擊控制方式,參考類型有《無人深空》《精英危險》《浴火銀河》等。此種模式的特點在於滑鼠同時控制了視角和航向,便於感受飛行追逐射擊的快感,在PC端由於滑鼠的特性可以很容易上手,但在移動端控制的時候需要相應的輔助瞄準(也是移動端FPS類特有的問題),由於此類玩家通常熱衷於飛行追逐,所以使用載具大都為戰機等靈活機型。

因麥曼機動,操控時需要滑鼠向上拉角度,然後翻滾

飛艇式控制,完全由鍵盤控制移動和旋轉,多用於直升機,飛艇,大型飛船類,參考遊戲有《Dreadnought》《Kerbal Space Program》等。有別於第一種模式,完全採用鍵位控制的飛船可以輕易實現在3個軸向上的旋轉和移動,也是最為接近於真實飛船移動的方式,但真實的不一定是最好的,同時控制位移和旋轉對操作要求大大提升,而且很難做出相應的機動,所以一般會對這種模式進行簡化,如《Dreadnought》中,就將WS作為前後移動,AD作為Yaw旋轉,Shift和Space作為上下移動,取消了Pitch和Roll控制,從而在保留的較多的操控感的同時簡化了操作。反觀《Kerbal Space Program》作為硬核航天模擬遊戲採用完全真實模擬控制,在操作的時候極為困難,需要經過多次練習才能掌握(對接的坑啊……MJ大法好)

KSP中模擬飛船對接

指令式控制,完全通過點擊相應的指令,飛船自主移動,這種模式就是將飛船操控的感覺完全去除,交給飛船自主姿態控制,極大的簡化了玩家操作難度,適用於MMO類型的太空遊戲。比如一切全靠右鍵點菜單的《EVE》,值得一提的是後期EVE加入了鍵位控制,但由於遊戲模式本身的問題,操作還不如不操作。

網易你倒是趕緊開服讓我進去截個圖啊!!!

遊戲作為一個箱籠,一個沉浸式的交互體驗場景,玩家的操作輸入和遊戲的反饋輸出至關重要,對於操控模式的選擇,需要在一開始的時候就根據遊戲的核心玩法來決定。此時此景,由於作者君沉迷《Dreadnought》,當然是選擇抄他一波啦……

首先在unity里製作這樣的一個場景,注意一點這裡我把飛船模型放到了控制器下的Avatar子對象下,這樣可以在控制器處理位移的時候對飛船進行一些其他的操作。

然後編寫控制腳本:

這裡先用最簡單的方式實現基本的效果,通過Rotate和Translate實現了最簡單的操作,UpDown是在Input中添加的軸向操作,參考Horizontal設置,鍵位改為shift和空格鍵就行。avatar部分是為了模擬Roll和Pitch旋轉,提升表現力。效果如下:

可以看到基本的效果已經出來了。當然,此處只是粗略的模擬,還有很多坑等著填,比如飛船操控的阻尼感,現在開起來就像紙片,飛船位移的碰撞處理,引擎的效果,等等,接下來我們一一來填。

首先改用物理的方式來移動,作者一開始為了真實模擬飛船採用了Rigidbody.AddForce的方式來做,好處是可以比較真實的模擬飛船的力,然後就掉坑裡了,各種受力點,物理材質,力矩調整,十分的麻煩,嘛……又不是做真實模擬,所以後來直接改Rigidbody.MovePosition好了,加速和減速分別用了兩個值,因為減速度很可能高於加速度,核心代碼如下:

然後將面板參數調整到合適的手感:

這樣就得到了進一步改進的飛船控制,手感已經接近於《Dreadnought》的操控,順帶我還摳了個引擎火焰效果放上去,根據操作進行反饋,下面是最終效果:

簡單的AI控制

由於只要提供三軸的控制,我們可以很容易的實現飛船的AI,這裡我簡單寫了個判別邏輯計算輸入的三軸,然後在fixedupdate中調用OnMove方法:

這裡是跟隨的效果,還湊合。

以上就是本篇飛船控制的內容,由於篇幅有限,不再對更複雜的飛船控制展開講解,大家可以去玩玩KSP進行親身體驗XD,下一篇講下常見的飛船武器,大艦就要配巨炮,億萬炮塔,億萬榮光!

工程地址:github.com/evesgf/Space


推薦閱讀:
相关文章