日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

unity3D游戏-打飞碟游戏改进版

發布時間:2023/12/20 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity3D游戏-打飞碟游戏改进版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

打飛碟(Hit UFO)游戲改進版

內容要求

  • 按 adapter模式 設計圖修改飛碟游戲
  • 使它同時支持物理運動與運動學(變換)運動

適配器模式

  • 適配器模式將某個類的接口轉換成另一個接口表示,目的是兼容性,讓原本因接口不匹配的不能工作的類可以協同工作

  • 對動作管理運用類適配器模式,設計運動學適配器RoundActionManager和物理運動適配器PhysisManager,這兩個適配器實現了同一接口IActionManager,IActionManager提供了一個簡單動作方法,用于執行拋出飛碟的動作。

public interface IActionManager{void addRandomAction (GameObject gameObj); }

游戲規則

  • 每個回合60s,玩過3關之后勝利
  • 飛碟不同的顏色,大小對應不同的分數
  • 回合60s內達到500分進入下一關,不能達到500分則失敗

代碼結構

游戲改進實現

  • 大部分代碼不需要做修改

  • 將原來的RoundActionManager里面的addRandomAction寫入到PhysisManager作為接口函數,我們在這個函數中為飛碟添加一個隨機方向的外力便可以達到改進效果,實現飛碟的物理學運動學飛行,在進行工廠模式和適配者模式的切換的時候,我們添加了變量If_Active,當If_Active=1的時候,我們切換到物理學運動模式,并將PysisManager腳本掛載到main對象中運行游戲

場景控制器中為PysisManager添加實例:

$ physisManager = Singleton<PhysisManager>.Instance; void Awake() {SSDirector director = SSDirector.getInstance();director.setFPS(60);director.currentScenceController = this;LoadResources();diskFactory = Singleton<DiskFactory>.Instance;scoreRecorder = Singleton<ScoreRecorder>.Instance;actionManager = Singleton<RoundActionManager>.Instance;physisManager = Singleton<PhysisManager>.Instance;leaveSecond2 = 60;state = State.PAUSE;disks = new List<GameObject>(); }
  • 由于PhysiscActionManager要用到FixedUpdate方法,所以要對SSAction(作用)、SSActionManager(作用)添加FixedUpdate,方法與Update相同
public class SSAction : ScriptableObject {public bool enable = true;public bool destroy = false;public GameObject gameObject { get; set; }public Transform transform { get; set; }public ISSActionCallback callback { get; set; }public virtual void Start(){throw new System.NotImplementedException();}public virtual void Update(){throw new System.NotImplementedException();}public virtual void FixedUpdate(){throw new System.NotImplementedException();} } public class SSActionManager : MonoBehaviour {···protected void FixedUpdate(){foreach (SSAction ac in waitingToAdd){actions[ac.GetInstanceID()] = ac;}waitingToAdd.Clear();foreach (KeyValuePair<int, SSAction> kv in actions){SSAction ac = kv.Value;if (ac.destroy){watingToDelete.Add(ac.GetInstanceID());}else if (ac.enable){ac.Update();}}foreach (int key in watingToDelete){SSAction ac = actions[key];actions.Remove(key);DestroyObject(ac);}watingToDelete.Clear();}··· }

其他代碼

詳見項目鏈接

游戲運行截圖

項目鏈接
視頻演示鏈接

參考資料

感謝此篇參考博客

總結

以上是生活随笔為你收集整理的unity3D游戏-打飞碟游戏改进版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。