嫌得蛋疼做了個接雞蛋
桶的觸發器
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要解決。自己的專案也如同自己的孩子一般,也不能放任不管,很多時候想
你以為在做的是微服務?不!你只是做了個比單體還糟糕的分散式單體!
昨晚睡覺前,順手擼了幾個群聊的聊天記錄。發現一個很有意思的名詞“分散式單體”,順藤摸瓜看了一下之前的聊天記錄,由於內容罵罵咧咧,我就不貼出來了。。。大致內容就是某公司在做微服務改造,但改的不倫不類,形式上像微服務,而本質上依然是單體,甚至連單體都不如。 這樣的改造現象,其實在國內還是蠻多見的。下面就來聊聊這