用unity制作简单的太空游戏(1):简单飞船控制
最近沉迷《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大法好)
?
指令式控制,完全通過點擊相應的指令,飛船自主移動,這種模式就是將飛船操控的感覺完全去除,交給飛船自主姿態控制,極大的簡化了玩家操作難度,適用于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,下一篇講下常見的飛船武器,大艦就要配巨炮,億萬炮塔,億萬榮光!
總結
以上是生活随笔為你收集整理的用unity制作简单的太空游戏(1):简单飞船控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用 Unity 探究 2D 游戏的打击感
- 下一篇: 角色动作系统概述:战斗、3C相关