改进飞碟(Hit UFO)游戏
1、改進飛碟(Hit UFO)游戲:
游戲內(nèi)容要求:
- 按 adapter模式 設(shè)計圖修改飛碟游戲
- 使它同時支持物理運動與運動學(xué)(變換)運動
新增的類或者有修改的類如下:
ActionManagerAdapter
適配器,有物理動作管理和運動學(xué)動作管理兩種屬性,當變量isPhy為真的時候?qū)崿F(xiàn)物理動作管理器,為假時實現(xiàn)運動學(xué)工作管理器。
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
物理工作管理器,管理使用了物理引擎實現(xiàn)的動作
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
物理的飛碟飛行動作,使用物理引擎實現(xiàn)動作。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創(chuàng)建一個新3d項目,退出unity;
將asset替換成下載的asset;
進入unity,打開剛才的項目;
將Firstcoroller,UserGUI,ScoreRecorder,DiskFactory掛載到空對象上就可以運行了
視頻
源碼
2、打靶游戲(可選作業(yè)):
游戲內(nèi)容要求:
- 靶對象為 5 環(huán),按環(huán)計分;
- 箭對象,射中后要插在靶上
?增強要求:射中后,箭對象產(chǎn)生顫抖效果,到下一次射擊 或 1秒以后 - 游戲僅一輪,無限 trials;
?增強要求:添加一個風(fēng)向和強度標志,提高難度
使用方法:
使用unity創(chuàng)建一個新3d項目,退出unity;
將asset替換成下載的asset;
進入unity,打開剛才的項目;
創(chuàng)建新攝像機,將child camera腳本掛載在這個攝像機上;
將camera flow腳本掛載在主攝像機上;
創(chuàng)建一個空對象,將firstcontroller,UserGUI,arrowFactory,scorerecorder腳本掛載在該空對象上。將主攝像機掛載在firstcontroller的main camera上,將新攝像機掛載在firstcontroller的child camera上。
視頻
源碼
總結(jié)
以上是生活随笔為你收集整理的改进飞碟(Hit UFO)游戏的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity游戏设计之飞碟游戏
- 下一篇: unity3d实现简单的打飞碟游戏