3D遊戲程式設計與設計作業六

2021-10-10 11:25:04 字數 2196 閱讀 6801

按 adapter模式 設計圖修改飛碟遊戲

使它同時支援物理運動與運動學(變換)運動

原專案:3d程式設計與遊戲設計作業五

僅僅對其中的一些類進行改動就能實現。

飛碟預設

由於要求支援物理運動,因此飛碟的預設需要在原來的基礎上加上剛體:

adapter的實現

adapter是通過不同的狀態選擇不同的介面,在本作業中是選擇不同的動作實現方式(物理/運動學),發現與之前的flyactioncontroller的功能類似,因此把它改寫成adapter:

public class adapter : ssactionmanager 

if(mode == 2)

else}}

通過mode控制運動型別,然後分別呼叫diskflyaction和physisflyaction,這裡用到的information是自定義型別,用於儲存相關資訊。

public struct mes
physisflyaction && ssaction && diskflyaction

physisflyaction類,**如下:

public class physisflyaction : ssaction

else

action.force = force_;

return action;

}// start is called before the first frame update

public override void start()

else}}

// update is called once per frame

public override void update()

public override void fixedupdate() }}

總體與物理**動實現類似,但是這裡用到了fixedupdate。

這個類設計的小細節有對重力的改變,在start中,開啟了重力,在乙個初始力和重力的作用下,飛碟進行拋體運動,當飛碟運動到我們攝像機視線之外(這裡是fixedupdate中提到的-10f)時,則關閉重力。因為如果不關閉重力,飛碟仍然會繼續下落,然後等到diskfactory**該飛碟進行下一次使用的時候會具有很大的速度,影響遊戲體驗,如下圖(可以看到第三次綠色飛碟出現在右下角的時候具有很大的豎直速度,一閃而過):

由於physic增加了fixedupdate,因此ssaction、diskflyaction也增加了乙個空的fixedupdate:

public class ssaction : scriptableobject 

……}public class diskflyaction : ssaction ……}

firstcontroller && inte***ces

firstcontroller的改動有:

增加了乙個bool變數,用於記錄是物理運動還是運動學變換運動,為了通過usergui改變這個變數,還增加了乙個setphysic函式,並且同時在inte***ces中加上方便usergui修改。

private bool physic = false;

……public void setphysic(bool physic_)

ssactionmanager

增加fixedupdate:

……

if (action.enable)

……

usergui

在第乙個介面增加了兩個按鈕,用於選擇是否是physic模式。

physic模式:

原本運動學模式仍然正常執行:

3D遊戲程式設計與設計作業一

所使用的思維導圖繪圖工具為mindmaster。華為應用 的遊戲排行榜前20名如下 9月22日 1王者榮耀 2和平精英 3迷你世界 4我的世界 5開心消消樂 6穿越火線 7貪吃蛇大作戰 8植物大戰殭屍2 9陰陽師 10湯姆貓跑酷 從排行榜可以看出,第1的王者榮耀 第2的和平精英 第6的穿越火線是屬於...

3D遊戲程式設計與設計 遊戲分類與熱點探索

使用思維導圖描述遊戲的分類 我使用的分類方式是按照遊戲方式分類,也即按遊戲玩法來分類。按遊戲方式分類遊戲,也稱為按遊戲玩法來分類的方式。這種分類法,是根據遊戲為了滿足某一目的而使用的不同表現方法來區分的。遊戲方式分類法具有清晰 客觀的特點,是當今遊戲最主要 最普遍的分類途徑。使用的軟體是xmind,...

3D遊戲程式設計與設計 Week11

這次作業差點就忘記交了,還是蠻簡單的。下面開始講實現步驟。1.初始設定 建立乙個halo的專案,並設定如下 2.部分 光圈粒子部分 基礎粒子部分 public class haloparticle 06.public float radius 10.public float angle 14.外光圈...