1. 程式人生 > >嫌得蛋疼做了個接雞蛋

嫌得蛋疼做了個接雞蛋

桶的觸發器

using UnityEngine;
public class EggCollider : MonoBehaviour
{
    void OnTriggerEnter(Collider co)
    {
        if (co.tag == "Egg")
        {
            ObjectPool.PushEgg(co.gameObject);
            Camera.main.GetComponent<GetEgg>().Clearing(false);
        }
    }
}

蛋的移動

using
UnityEngine; public class EggMove : MonoBehaviour { Vector3 pos;//過渡的變數 void Update() { pos = transform.position;//使物體下落 pos.y -= Time.deltaTime * GetEgg.eggMoveSpeed; transform.position = pos; } }

物件池?

using System.Collections.Generic;
using UnityEngine;
public
class ObjectPool : MonoBehaviour { static Queue<GameObject> pool = new Queue<GameObject>();//使用佇列,先進先出,避免連續生成同一個物件 static GameObject egg;//預製:雞蛋 static Vector3 _position;//初始位置 static Quaternion _rotation;//初始旋轉 static Transform tran; void Awake() { tran = transform; egg = Resources.Load("GetEgg/Egg"
) as GameObject;//載入 _position = egg.transform.position;//(記錄初始變換,回收時重置) _rotation = egg.transform.rotation; } public static void GetObject()//得到一個物件 { GameObject _egg = null; if (pool.Count >= 5)//給予一定的週轉空間? { _egg = pool.Dequeue();//得到佇列底部的物件 } else { _egg = Instantiate(egg);//池子沒有可用的資源,增加 _egg.AddComponent<EggMove>(); _egg.transform.SetParent(tran); pool.Enqueue(_egg); } GetEgg.eggMoveSpeed += 0.2f;//下落速度逐漸加快 _egg.transform.position = new Vector3(Random.Range(-14, 14), 0, -20);//隨機生成一個位置下落 _egg.SetActive(true); } public static void PushEgg(GameObject obj)//回收一個物件 { obj.transform.position = _position; obj.transform.rotation = _rotation; obj.SetActive(false); if (pool.Contains(obj)) return; pool.Enqueue(obj); } }

地面上的觸發器

using UnityEngine;
public class PlaneCollider : MonoBehaviour
{
    void OnTriggerEnter(Collider co)
    {
        if (co.tag == "Egg")
        {
            ObjectPool.PushEgg(co.gameObject);
            Camera.main.GetComponent<GetEgg>().Clearing(true);
        }
    }
}

計時器

看我上一篇文章
http://blog.csdn.net/u013452440/article/details/64441095

其他。。。

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
public class GetEgg : MonoBehaviour
{
    GameObject player;//玩家

    int score = 0;//玩家分數
    int maxScore;//最高分數
    int minScore;//最低分數
    int lose = 0;//丟失的分數
    Text showScore;//顯示玩家分數
    Text showLose;//顯示玩家丟失分數
    GameObject showClearing;//顯示結算結果
    float nextTime;//計時
    float oriSpeed;//下一次出現的時間
    float shift;//難度
    public static float eggMoveSpeed;//下落的速度
    GameObject panelScore;//排行榜分數預製
    List<int> scoreList = new List<int>();//所有的分數
    List<int> timeList = new List<int>();//所有的時間
    public List<GameObject> obj = new List<GameObject>();
    GameObject scoreView;
    void Start()
    {
        scoreView = GameObject.Find("Scroll View");
        for (int index = 0; index < scoreView.transform.GetChild(0).GetChild(0).childCount; index++)
        {
            obj.Add(scoreView.transform.GetChild(0).GetChild(0).GetChild(index).gameObject);
        }
        player = GameObject.Find("Player");
        player.AddComponent<EggCollider>();
        panelScore = Resources.Load("GetEgg/ScorePanel") as GameObject;
        showScore = GameObject.Find("ShowScore").GetComponent<Text>();
        showLose = GameObject.Find("ShowLose").GetComponent<Text>();
        showClearing = GameObject.Find("ShowClearing");
        showScore.text = "Score:0";
        showLose.text = "Lose:0";
        Button reset = GameObject.Find("ResetButton").GetComponent<Button>();
        reset.GetComponentInChildren<Text>().text = "重試";
        reset.onClick.AddListener(delegate { ResetGame(); });
        Button exit = GameObject.Find("ExitButton").GetComponent<Button>();
        exit.GetComponentInChildren<Text>().text = "Exit";
        exit.onClick.AddListener(delegate { ExitGame(); });
        Button sv = GameObject.Find("ScoreViewButton").GetComponent<Button>();
        sv.GetComponentInChildren<Text>().text = "排行榜";
        sv.onClick.AddListener(delegate { ScoreListState(); });

        showClearing.SetActive(false);
        scoreView.SetActive(false);

        ResetGame();
    }
    float moveSpeed;//玩家的移動速度
    Vector3 move;//玩家將要移動的位置
    float minX = -14f;
    float maxX = 14f;
    void Update()
    {
    //這裡是桶的移動
        move.x += Input.GetAxis("Horizontal") * Time.deltaTime * moveSpeed;//獲取水平移動
        if (move.x < minX)//出左邊界則從右邊界出現
            move.x = maxX;
        else if (move.x > maxX)//出右邊界則從左邊界出現
            move.x = minX;
        player.transform.position = move;//移動

   //這裡是蛋的生成時機
        if (nextTime < oriSpeed)//計時
            nextTime += Time.deltaTime;
        else//到達下一次出現的時間
        {
            nextTime -= oriSpeed;//重新計時
            oriSpeed *= shift;//難度增加
            if (oriSpeed < 0.5f)
                oriSpeed = 0.5f;
            else if (oriSpeed > 3f)
                oriSpeed = 3f;//限制難度的最大最小值
            ObjectPool.GetObject();
        }
    }
    public void Clearing(bool isLose)//結算
    {
        if (isLose)
        {
            showLose.text = "Lose:" + ++lose;
            if (lose >= 10)
            {
                if (score > maxScore)
                {
                    maxScore = score;
                    showClearing.GetComponentInChildren<Text>().text = "不錯喲,你又進步了";
                }
                else if (score < minScore)
                {
                    minScore = score;
                    showClearing.GetComponentInChildren<Text>().text = "又偷懶了吧你";
                }
                else
                {
                    showClearing.GetComponentInChildren<Text>().text = "怎麼又掛了,我想靜靜...";
                }
                scoreList.Add(score);
                timeList.Add(Camera.main.GetComponent<TimeCount>().CurrentSecond);
                Time.timeScale = 0;
                showClearing.SetActive(true);
            }
        }
        else
            showScore.text = "Score:" + ++score;
    }
    void ResetGame()//初始化引數
    {
        lose = 0;
        score = 0;
        showLose.text = "Lose:" + lose;
        showScore.text = "Score:" + score;
        eggMoveSpeed = 10;
        shift = 0.98f;
        nextTime = 0;
        oriSpeed = 2;
        moveSpeed = 12;
        move = new Vector3(0, -30f, -20f);
        showClearing.SetActive(false);
        Camera.main.GetComponent<TimeCount>().ResetTime();
        Transform tran = GameObject.Find("ObjectPool").transform;
        for (int index = 0; index < tran.childCount; index++)
            tran.GetChild(index).gameObject.SetActive(false);
        Time.timeScale = 1;
    }
    void ExitGame()
    {
        Application.Quit();
    }
    bool isOpen = true;
    void ScoreListState()
    {
        if (isOpen)
        {
            Time.timeScale = 0;
            scoreList.Sort();
            Vector2 pos = new Vector2(0, 0);
            int shift = -35;
            for (int count = 0; count < 10; count++)
            {
                pos.y += shift;
                int mIndex = scoreList.Count - count - 1;
                obj[count].transform.GetChild(0).GetComponentInChildren<Text>().text = (count + 1).ToString();
                if (count < scoreList.Count)
                {
                    obj[count].SetActive(true);
                    obj[count].transform.GetChild(1).GetComponentInChildren<Text>().text = timeList[mIndex] + "秒鐘接了" + scoreList[mIndex] + "個!";
                }
                else
                    obj[count].SetActive(false);
            }
        }
        else
        {
            Time.timeScale = 1;
        }
        scoreView.SetActive(isOpen);
        isOpen = !isOpen;
    }
}

結果

這裡寫圖片描述

相關推薦

雞蛋

桶的觸發器 using UnityEngine; public class EggCollider : MonoBehaviour { void OnTriggerEnter(Collider co) { if (co.ta

一個令人的NDK鏈錯誤

static ash main.c .cpp 編譯過程 android 回憶 支持 項目結構 背景 我們APP的引擎包engine.so。包括了A、B、C三個project。但每次都是源代碼形式編譯,導致svn上存在多份同樣代碼拷貝。很不科學。。。核心的Bproj

今天用node的cheerio模塊某乎的爬蟲

總結 chrome pid 結果 添加 踩坑 刷新 標準 ide   一時興起,想做個爬蟲,經過各種深思熟慮,最後選擇了某乎,畢竟現在某乎的數據質量還是挺高的。說幹就幹    打開某乎首頁,隨便搜索了一串關鍵字,相關的問題和答案就展現在眼前,我就思考怎麽把這些搜索結果

室友玩掃雷通關還跟我炫耀!於是用Python十秒鐘通關的自動掃雷程式,讓他受到驚嚇!

起因是這樣的,室友和我一起玩掃雷高難度,今天他來告訴我他的通關了! 各種炫耀,如下圖! 於是,我用就用Python開發了個自動掃雷程式!跟他裝了逼,瞬間喊我哥,要我教他 好了,不廢話了!本文用於娛樂,歡迎大佬們指點! 進入正題 再說一句廢話,加v❤k

有用的小程式,而不僅僅是小程式

現在很多商戶在大量的小程式代理及電銷的推廣下做了小程式,可是僅僅是做了,過了段時間,發現做了小程式,但是使用者量並沒有激增,銷量也沒有和想象中的那樣蹭蹭的往上升。一切還是照舊,只是小程式成了擺設。所以很多商家得到一個結論:小程式沒有用。 可是,真的是小程式沒有用麼? 今天

最近自己研究vue國際化demo,總結如下

vue專案做多語言(國際化) 第一步、安裝vue-i18n npm install vue-i18n 第二步、在main.js中引入vue-i18n(如下圖) 第三步、建兩個語言包檔案,目錄結構如下圖: 第四步、給這兩個檔案裡寫靜態的頁面展示資料 1、en.js(內容如下圖) 2、zh.js(內容如

VLC,FFMPEG, RTP,28181 學習 網址彙總

https://blog.csdn.net/zhouyongku/article/details/41546789  海康RTSP客戶端連線深入分析  http://www.avahi.org/doxygen/html/client-publish-service_8c

後末日朋克風的夢

先是夢見在太空站休眠艙裡醒來,想起來是從現在時間旅行到了未來,看了下地面監控回放,只見一片荒漠,一個群落慢慢發展起來,中央一座大樓從廢墟中蓋了起來,越建越高,又被破壞從中間倒塌,然後想起來人類文明因為某種原因幾乎毀滅。看起來地面似乎有人類頻繁的活動痕跡,於是我就乘飛行器來到了地面。 很快就遇到了一隊拾荒者,沒

想在家看VIP電影,我用python破解軟體,她很開心!

執行平臺: Windows Python版本: Python3.x IDE: Sublime text3 一、前言 沒有會員,想線上觀看或下載愛奇藝、PPTV、優酷、網易公開課、騰訊視訊、搜狐視訊、樂視、土豆、A站、B站等主流視訊網站的VIP視訊?又不想充會員怎麼辦?博主本次寫的VI

線上流程圖繪製工具

數字繪 線上線框圖、流程圖、網路圖、組織結構圖、UML、BPMN繪製網站,繪製完成之後可以匯出成圖片、SVG、XML,也可以儲存在雲端並能分享給其他使用者。 網站 數字繪 原始碼 輪子 Cloudreve 基於ThinkPHP構建的網盤系統,能夠助您以較低

Python ADB 抖音影象識別機器人

 最近下了個抖音玩,沉迷刷漂亮小姐姐總是刷不到,痛定思痛用 Python ADB (感謝鵝廠影象識別庫)訓練了一個機器人,嘛呀太方便了!!!成果 原理 開啟APP 獲取手機截圖,並對截圖進行

用java控制檯版的2048

玩幾局2048,理解下程式執行過程,程式碼挺簡單但是創造2048這個遊戲的人很牛。 import java.util.Random; import java.util.Scanner; public class game2048 { static Random r

不安分的程式設計師!阿里90後員工隨時FreeStyle的人工智慧

頂著鴨舌帽、戴著墨鏡,掛著大金鍊子唱著自己寫的rap,這對於從來沒有玩過音樂,甚至五音不全的90後程序員蘆陽來說,看上去是個非常遙遠的夢。 不過最近,他真的在阿里電臺和朋友錄製了人生第一首rap,主題就是關於雙11和人工智慧。幫助他完成心願的,是他自己設計的人工智慧Mu

自己網站 網址:http://www.sunshinelin.club

網址: http://www.sunshinelin.club 當初做這個網站的目的就是為了能夠自己用,想做什麼功能就寫什麼功能。感覺使用自己的東西比較有成就感。 這個是網站的首頁 我用的s

AjaxPanel自定義控制元件實現頁面無重新整理資料互動(示例程式, 效果確實比較Cool, 用法非常簡單! )(示例程式碼下載)

(一) . 簡要           AjaxPanel, 一個自定義控制元件, 只要在頁面中將AjaxPanel作為父控制元件, 則它內部的控制元件在執行時無重新整理.            做了個程式試了一下果然比較Cool !  下面介紹一下具體配置, 配置也比較簡單.

無意間 web 版的 JVM 監控端(前後端分離 React+Spring Boot)

之前寫了JConsole、VisualVM 依賴的 JMX 技術,然後放出了一個用純 JMX 實現的 web 版本的 JConsole 的截圖,今天原始碼來了。 本來就是為了更多的瞭解 JMX,第一步就想把所有的 MBean 和屬性都展示出來,開始在控制檯輸出,但是效果不好,內容太多太長,不夠直觀,然後就加了

我用STM32MP1疫情監控平臺4—功能完善介面重新設計

@[toc] ### 前言 之前我用STM32MP1和Qt實現了疫情監控平臺,系列教程: - [我用STM32MP1做了個疫情監控平臺1—交叉編譯環境搭建](https://www.cnblogs.com/whik/p/12430277.html) - [我用STM32MP1做了個疫情監控平臺2—Qt環境

女朋友老是埋怨我技術不行,於是我輔助工具。

事件起因 ❝ 女朋友平時酷愛王者榮耀,所以她沒事的時候也喜歡拉拉我打兩把,這不前段時間還買了一個王者榮耀的李白聯名口紅向我炫耀,心裡不免有點吃醋,一個3D人物能有真人賞心悅目嗎?於是我暗下決心,決定苦練農藥技巧,在她面前秀上一把。其實對於王者榮耀,我的技術也不算太差,和她一起玩的時候總能拿到MVP,就是贏不了

為開源作者賦能,為此我花一個月時間工具平臺

## 前言 在介紹這個專案之前,先聽我BB幾句。 自己做開源也有2,3年了。現在也長期維護著3個開源專案,起初只是一時興趣,覺得做出一個東西放在開源站點上是一件很有意義的事。但是凡是用的人多了,自然會有各種各樣的問題和bug,各種issue要解決。自己的專案也如同自己的孩子一般,也不能放任不管,很多時候想

你以為在的是微服務?不!你只是比單體還糟糕的分散式單體!

昨晚睡覺前,順手擼了幾個群聊的聊天記錄。發現一個很有意思的名詞“分散式單體”,順藤摸瓜看了一下之前的聊天記錄,由於內容罵罵咧咧,我就不貼出來了。。。大致內容就是某公司在做微服務改造,但改的不倫不類,形式上像微服務,而本質上依然是單體,甚至連單體都不如。 這樣的改造現象,其實在國內還是蠻多見的。下面就來聊聊這