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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

改进飞碟游戏

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

任務要求

  • 按adapter模式設計修改飛碟游戲
  • 同時支持物理運動和運動學運動
  • 實現過程

    由于這次是在之前一次作業的基礎上完成的,所以首先將之前的代碼copy一份,然后對其進行修改。由于之前做的飛碟游戲并沒有采用老師提供的動作分離的結構,所以這次的更改也沒有采用老師提供的架構,就導致代碼的結構非常的混亂,由此可見一個好的代碼結構是多么的重要。
    這次的實驗主要目的是添加一個物理運動,然后還可以在物理運動與運動學運動之間轉換。為了盡可能少的更改之前的代碼,所以只在局部采用了adapter的模式,主要就是對于物理運動的實現。首先定義一個物理運動的接口,然后使用一個類來繼承這個接口,并把它實現,然后再在控制類里面調用,從而實現物理學運動。
    設置物理學運動的接口:

    public interface grativity {void setGrativity(GameObject obj, Vector3 dir);void removeGrativity(GameObject obj); }

    然后使用一個類來繼承并實現這個接口:

    public class adapter : MonoBehaviour, grativity {/*void setGrativity(GameObject obj){obj.gameObject.GetComponent<Rigidbody>().AddForce(Vector3.down * 9.8f);}*/public void setGrativity(GameObject obj, Vector3 dir){//obj.gameObject.AddComponent<Rigidbody>();//obj.gameObject.GetComponent<Rigidbody>().AddForce(dir * 9.8f);obj.gameObject.AddComponent<Rigidbody>();obj.gameObject.GetComponent<Rigidbody>().AddForce(dir);obj.gameObject.GetComponent<Rigidbody>().useGravity = false;//throw new System.NotImplementedException();}public void removeGrativity(GameObject obj){obj.AddComponent<Rigidbody>();//u.GetComponent<Rigidbody>().AddForce(-dir[num]);Destroy(obj.GetComponent<Rigidbody>());}public void setmoveable(GameObject obj){if (obj.gameObject.GetComponent<Rigidbody>() != null){Destroy(obj.gameObject.GetComponent<Rigidbody>());}}// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {} }

    在控制類中就可以直接調用這個類來使用這些方法
    控制其移動中:

    移除時:

    其他的一些改進

    在之前版本的打飛碟游戲中由于飛碟是沒有添加剛體屬性的,所以在生成物體的時候都是將他們在同一個地方生成的,然后每個trial同時發射。這點在物理學運動時添加剛體后是有問題的,如果剛體生成時出現了重合,那么在讓其運動的時候就會出現劇烈的彈飛,導致飛碟飛行的路徑不好設置,所以為了改進這一點對于飛碟的生成發射方式進行了一個改進。
    在每個trial,飛碟是一個一個生成并發射出去的,這樣就避免了兩個飛碟重合的情況,具體實現如下:

    每當到達一個trial的時候控制變量create設置為1表示可以生成飛碟了,然后每隔0.2f的時間從工廠中拿出一個飛碟發射,達到依次發射飛碟的目的。

    對于兩種模式的切換問題

    題目中有說到同時實現兩個運動,所以就需要一個變量來控制現在到底使用的是哪種運動方式,而這個變量是可以在運行時被更改的。為了更加的簡單,所以我沒有設計一個專門的按鈕來實現切換,而是直接使用一個public的變量來進行控制,這樣就算在游戲運動場景中也可以進行變換。

    然后在控制飛碟運動的時候就進行判斷,并調用不同的函數來實現

    運行截圖


    在空對象中就可以看到一個mod的選項,這里就可以對模式進行切換。
    項目地址

    總結

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

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