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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

改进飞碟(Hit UFO)游戏

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

1、改進飛碟(Hit UFO)游戲:

游戲內容要求:

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

新增的類或者有修改的類如下:

ActionManagerAdapter

適配器,有物理動作管理和運動學動作管理兩種屬性,當變量isPhy為真的時候實現物理動作管理器,為假時實現運動學工作管理器。

public class ActionManagerAdapter : MonoBehaviour,IActionManager {public FlyActionManager action_manager;public PhysisFlyActionManager phy_action_manager;public void playDisk(GameObject disk, float angle, float power,bool isPhy){if(isPhy){phy_action_manager.playDisk(disk, angle, power);}else{action_manager.playDisk(disk, angle, power);}}// Use this for initializationvoid Start (){action_manager = gameObject.AddComponent<FlyActionManager>() as FlyActionManager;phy_action_manager = gameObject.AddComponent<PhysisFlyActionManager>() as PhysisFlyActionManager;} }

PhysisFlyActionManager

物理工作管理器,管理使用了物理引擎實現的動作

public class PhysisFlyActionManager : SSActionManager {public PhysisUFOFlyAction fly; //飛碟飛行的動作protected void Start(){}//飛碟飛行public void UFOFly(GameObject disk, float angle, float power){fly = PhysisUFOFlyAction.GetSSAction(disk.GetComponent<DiskData>().direction, angle, power);this.RunAction(disk, fly, this);} }

PhysisUFOFlyAction

物理的飛碟飛行動作,使用物理引擎實現動作。public class PhysisUFOFlyAction : SSAction {private Vector3 start_vector; //初速度向量public float power;private PhysisUFOFlyAction() { }public static PhysisUFOFlyAction GetSSAction(Vector3 direction, float angle, float power){//初始化物體將要運動的初速度向量PhysisUFOFlyAction action = CreateInstance<PhysisUFOFlyAction>();if (direction.x == -1){action.start_vector = Quaternion.Euler(new Vector3(0, 0, -angle)) * Vector3.left * power;}else{action.start_vector = Quaternion.Euler(new Vector3(0, 0, angle)) * Vector3.right * power;}action.power = power;return action;}public override void FixedUpdate(){//判斷是否超出范圍if (this.transform.position.y < -10){this.destroy = true;this.callback.SSActionEvent(this);}}public override void Update() { }public override void Start(){//使用重力以及給一個初速度gameobject.GetComponent<Rigidbody>().velocity = power / 35 * start_vector;gameobject.GetComponent<Rigidbody>().useGravity = true;} }

其他沒有更改。

使用方法:

使用unity創建一個新3d項目,退出unity;
將asset替換成下載的asset;
進入unity,打開剛才的項目;
將Firstcoroller,UserGUI,ScoreRecorder,DiskFactory掛載到空對象上就可以運行了
視頻
源碼

2、打靶游戲(可選作業):

游戲內容要求:

  • 靶對象為 5 環,按環計分;
  • 箭對象,射中后要插在靶上
    ?增強要求:射中后,箭對象產生顫抖效果,到下一次射擊 或 1秒以后
  • 游戲僅一輪,無限 trials;
    ?增強要求:添加一個風向和強度標志,提高難度

使用方法:
使用unity創建一個新3d項目,退出unity;
將asset替換成下載的asset;
進入unity,打開剛才的項目;
創建新攝像機,將child camera腳本掛載在這個攝像機上;
將camera flow腳本掛載在主攝像機上;
創建一個空對象,將firstcontroller,UserGUI,arrowFactory,scorerecorder腳本掛載在該空對象上。將主攝像機掛載在firstcontroller的main camera上,將新攝像機掛載在firstcontroller的child camera上。
視頻
源碼

總結

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

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