版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Unity3D實現(xiàn)經(jīng)典小游戲Pacman目錄項目概況整體布局地圖介紹玩法介紹相關知識版本說明項目源碼
項目概況
整體布局
地圖介紹
除了音效,游戲地圖上的元素有:
普通糖豆(玩家通過移動,經(jīng)過的普通糖豆會被吃掉,獲得積分)
特殊糖豆(玩家吃到后,可以讓所有敵方停止移動,產(chǎn)生幻影效果)
隔離墻(相當于迷宮的墻,在兩堵墻之間的間隙才能移動)
剩余游戲時間Remain(共設300s,時間一到,游戲結束)
截止到現(xiàn)在花費的游戲時間Now(設在0~300之間)
截止到目前為止的游戲得分Score(越高越好)
敵方人機(分為四種顏色區(qū)分,小橙、小粉、小藍、小紅)
我方玩家(小黃,游戲的主體之一)
玩法介紹
玩法(輸贏的判斷):
盡量在所設時限內吃完所有的糖豆并且未被敵方人機碰到。
如果都吃完了,用時少的更佳;
如果都沒吃完,相同時間內得分高者更佳。
吃到特殊糖豆(大糖豆),可以讓所有敵方停止移動,產(chǎn)生幻影效果,相當于無敵效果的反作用,使自己在某段時間內不會被攻擊,延長了玩家的存活時間,可以通過概率設計更改玩家的存活率。
相關知識
在學習的過程中,幾個比較重要的知識點就是:預制體、克隆體、精靈渲染器、渲染層級、腳本、碰撞檢測、觸發(fā)檢測、AI設計、UI設計、固定物理幀...
版本說明
小蝦采用的是Unity一個較新的版本-2025.1.16,這里建議小伙伴們下載和教程相同版本的,不然真的會有可能遇到卡點消耗心情哈。
可以和我一樣在UnityHub里面安裝,Hub感覺挺好用的。
項目源碼
玩家的移動(PacmanMove.cs)
usingUnityEngine;
publicclassPacmanMove:MonoBehaviour
//吃豆人的移動速度
publicfloatspeed=0.35f;
//吃豆人下一次移動將要去的目的地
privateVector2dest=Vector2.zero;
privatevoidStart()
//保證吃豆人在游戲剛開始的時候不會動
dest=transform.position;
privatevoidFixedUpdate()
//插值得到要移動到dest位置的下一次移動坐標
Vector2temp=Vector2.MoveTowards(transform.position,dest,speed);//隨著幀的每次調用,不斷向右移動取中間值
//通過剛體來設置物體的位置
GetComponentRigidbody2D().MovePosition(temp);
//必須先達到上一個dest的位置才可以發(fā)出新的目的地設置指令
if((Vector2)transform.position==dest)
if((Input.GetKey(KeyCode.UpArrow)||Input.GetKey(KeyCode.W))Valid(Vector2.up))
dest=(Vector2)transform.position+Vector2.up;
if((Input.GetKey(KeyCode.DownArrow)||Input.GetKey(KeyCode.S))Valid(Vector2.down))
dest=(Vector2)transform.position+Vector2.down;
if((Input.GetKey(KeyCode.LeftArrow)||Input.GetKey(KeyCode.A))Valid(Vector2.left))
dest=(Vector2)transform.position+Vector2.left;
if((Input.GetKey(KeyCode.RightArrow)||Input.GetKey(KeyCode.D))Valid(Vector2.right))
dest=(Vector2)transform.position+Vector2.right;
//獲取移動方向
Vector2dir=dest-(Vector2)transform.position;
//把獲取到的移動方向設置給動畫狀態(tài)機
GetComponentAnimator().SetFloat("DirX",dir.x);
GetComponentAnimator().SetFloat("DirY",dir.y);
//檢測將要去的位置是否可以到達
privateboolValid(Vector2dir)
//記錄下當前位置
Vector2pos=transform.position;
//從將要到達的位置向當前位置發(fā)射一條射線,并儲存下射線信息
RaycastHit2Dhit=Physics2D.Linecast(pos+dir,pos);
//返回此射線是否打到了吃豆人自身上的碰撞器
return(hit.collider==GetComponentCollider2D
}
糖豆設計(Pacdot.cs)
usingUnityEngine;
publicclassPacdot:MonoBehaviour
publicboolisSuperPacdot=false;
privatevoidOnTriggerEnter2D(Collider2Dcollision)
if(collision.gameO=="Pacman")
if(isSuperPacdot)
GameManager.Instance.OnEatPacdot(gameObject);
GameManager.Instance.OnEatSuperPacdot();
Destroy(gameObject);
else
GameManager.Instance.OnEatPacdot(gameObject);
Destroy(gameObject);
}
敵方人機的移動(GhostMove)
usingSystem.Collections.Generic;
usingUnityEngine;
usingUnityEngine.SceneManagement;
publicclassGhostMove:MonoBehaviour
publicGameObject[]wayPointsGos;
publicfloatspeed=0.2f;
privateListVector3wayPoints=newListVector3
privateintindex=0;
privateVector3startPos;
privatevoidStart()
startPos=transform.position+newVector3(0,3,0);
LoadAPath(wayPointsGos[GameManager.Instance.usingIndex[GetComponentSpriteRenderer().sortingOrder-2]]);
privatevoidFixedUpdate()
if(transform.position!=wayPoints[index])
Vector2temp=Vector2.MoveTowards(transform.position,wayPoints[index],speed);
GetComponentRigidbody2D().MovePosition(temp);
else
index++;
if(index=wayPoints.Count)
index=0;
LoadAPath(wayPointsGos[Random.Range(0,wayPointsGos.Length)]);
Vector2dir=wayPoints[index]-transform.position;
GetComponentAnimator().SetFloat("DirX",dir.x);
GetComponentAnimator().SetFloat("DirY",dir.y);
privatevoidLoadAPath(GameObjectgo)
wayPoints.Clear();
foreach(Transformtingo.transform)
wayPoints.Add(t.position);
wayPoints.Insert(0,startPos);
wayPoints.Add(startPos);
privatevoidOnTriggerEnter2D(Collider2Dcollision)
if(collision.gameO=="Pacman")
if(GameManager.Instance.isSuperPacman)
transform.position=startPos-newVector3(0,3,0);
index=0;
GameManager.Instance.score+=500;
else
colli
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026江蘇泰州靖江農(nóng)商銀行寒假實習生招募40人參考題庫附答案
- 2026廣東深圳市福田區(qū)下沙實驗幼兒園招聘1人考試備考題庫附答案
- 2025年中衛(wèi)市選聘行政執(zhí)法監(jiān)督員筆試真題
- 第二單元 認識社會與價值選擇 單元測試(含解析)-2025-2026學年高中政治統(tǒng)編版必修四哲學與文化
- 2026年湖南省公安機關考試錄用特殊職位公務員(人民警察)13人備考題庫附答案詳解
- 2026上半年云南事業(yè)單位聯(lián)考省科學技術廳直屬事業(yè)單位招聘8人備考題庫及一套答案詳解
- 2026年度自然資源部所屬單位公開招聘工作人員備考題庫(第一批)(634人)有完整答案詳解
- 2026年上半年中共云南省委辦公廳所屬事業(yè)單位招聘人員備考題庫(4人)及答案詳解(易錯題)
- 2026中國科學院遺傳與發(fā)育生物學研究所李家洋研究組人員招聘1人備考題庫及一套參考答案詳解
- 2026廣東廣州市越秀區(qū)登峰街招聘綜合行政執(zhí)法協(xié)管員2人備考題庫及完整答案詳解1套
- 云南省玉溪市2025-2026學年八年級上學期1月期末物理試題(原卷版+解析版)
- DL-T976-2017帶電作業(yè)工具、裝置和設備預防性試驗規(guī)程
- 企業(yè)標準-格式模板
- 軟件售后服務人員提成方案附表
- 五年級上冊道德與法治期末測試卷新版
- 友達光電(昆山)有限公司第一階段建設項目環(huán)?!叭瑫r”執(zhí)行情況報告
- 建筑材料進場報告
- YY/T 1543-2017鼻氧管
- YS/T 903.1-2013銦廢料化學分析方法第1部分:銦量的測定EDTA滴定法
- GB/T 9414.9-2017維修性第9部分:維修和維修保障
- GB/T 21781-2008化學品的熔點及熔融范圍試驗方法毛細管法
評論
0/150
提交評論