亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一個(gè)Unity3D開(kāi)發(fā)教學(xué)項(xiàng)目的設(shè)計(jì)與實(shí)現(xiàn)

        2023-06-15 23:44:59陳小紅
        計(jì)算機(jī)時(shí)代 2023年6期
        關(guān)鍵詞:項(xiàng)目式教學(xué)虛擬現(xiàn)實(shí)

        摘? 要: Unity3D引擎是虛擬現(xiàn)實(shí)的主要開(kāi)發(fā)工具之一。結(jié)合高職院校“Unity3D開(kāi)發(fā)入門(mén)”的課程特點(diǎn)和實(shí)際教學(xué)中的問(wèn)題,遵循項(xiàng)目式教學(xué)原則,設(shè)計(jì)和開(kāi)發(fā)了一個(gè)“叢林尋寶”的Unity3D游戲項(xiàng)目,讓學(xué)生通過(guò)該項(xiàng)目的學(xué)習(xí)理解Unity3D引擎開(kāi)發(fā)原理,循序漸進(jìn)地掌握完整的Unity3D項(xiàng)目開(kāi)發(fā)的流程,為相關(guān)課程教學(xué)活動(dòng)的開(kāi)展提供借鑒。

        關(guān)鍵詞: Unity3D; 虛擬現(xiàn)實(shí); 項(xiàng)目式教學(xué); 游戲項(xiàng)目

        中圖分類(lèi)號(hào):TP391.9;G712? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ?文章編號(hào):1006-8228(2023)06-153-04

        Design and implementation of a Unity3D development teaching project

        Chen Xiaohong

        (Department of Printing and Packaging, Shanghai Publishing and Printing College, Shanghai 200093, China)

        Abstract: Unity3D engine is one of the main development tools of virtual reality. Combined with the course characteristics and the problems in practical teaching of "Introduction to Unity3D Development" in higher vocational colleges, a Unity3D teaching project of "Jungle Treasure Hunting" is designed and developed following the principle of project-based teaching. Students can learn and understand the principle of Unity3D engine development and master the complete Unity3D project development process step by step through the study of this project. It provides a reference for the teaching activities of related courses.

        Key words: Unity3D; virtual reality; project-based teaching; game project

        0 引言

        虛擬現(xiàn)實(shí)技術(shù)(Virtual Reality即VR),是20世紀(jì)發(fā)展起來(lái)的一項(xiàng)全新的實(shí)用技術(shù),VR產(chǎn)業(yè)的迅猛發(fā)展,相關(guān)專(zhuān)業(yè)人才的缺口日益擴(kuò)大[1]。至2022年全國(guó)開(kāi)設(shè)“虛擬現(xiàn)實(shí)技術(shù)應(yīng)用”專(zhuān)業(yè)的高等職業(yè)院校已有近200所。對(duì)于這個(gè)創(chuàng)新性強(qiáng)、多學(xué)科交叉的新專(zhuān)業(yè),學(xué)校在師資建設(shè)、課程體系構(gòu)建、課程資源建設(shè)等各方面均面臨巨大的挑戰(zhàn)[2]。

        1 “Unity3D開(kāi)發(fā)入門(mén)”課程教學(xué)分析

        “Unity3D開(kāi)發(fā)入門(mén)”是VR技術(shù)人才培養(yǎng)的一門(mén)專(zhuān)業(yè)核心課程,課程的總體目標(biāo)是培養(yǎng)學(xué)生利用Unity3D引擎開(kāi)發(fā)游戲等虛擬現(xiàn)實(shí)應(yīng)用項(xiàng)目的能力。Unity3D引擎的功能強(qiáng)大,組件和參數(shù)設(shè)置不僅數(shù)量繁多也比較復(fù)雜,課程教學(xué)面臨較大困難,相關(guān)課程教學(xué)資源和教材的開(kāi)發(fā)也較滯后,缺乏可以借鑒的教學(xué)經(jīng)驗(yàn)。以學(xué)生為主體的項(xiàng)目式教學(xué),強(qiáng)調(diào)讓學(xué)生通過(guò)理論指導(dǎo)實(shí)踐、在實(shí)踐中深化對(duì)理論知識(shí)的理解。項(xiàng)目式教學(xué)的重點(diǎn)是教學(xué)項(xiàng)目的設(shè)計(jì),教學(xué)項(xiàng)目的選取與學(xué)生的崗位能力要求是否匹配,直接影響了教學(xué)效果[3]。本課程讓學(xué)生通過(guò)完成一個(gè)“叢林尋寶”Unity3D項(xiàng)目的分析、設(shè)計(jì)和開(kāi)發(fā)的過(guò)程,理解Unity3D引擎開(kāi)發(fā)原理,掌握完整的項(xiàng)目開(kāi)發(fā)流程,達(dá)到課程的教學(xué)目標(biāo)。

        2 “叢林尋寶”教學(xué)項(xiàng)目的設(shè)計(jì)

        2.1 項(xiàng)目策劃

        “叢林尋寶”項(xiàng)目在實(shí)際教學(xué)中打破了學(xué)科知識(shí)體系次序,教學(xué)內(nèi)容被分解為若干個(gè)任務(wù)點(diǎn),涵蓋了Unity3D引擎的基本操作、地形系統(tǒng)、光照系統(tǒng)、粒子系統(tǒng)、動(dòng)畫(huà)系統(tǒng)、導(dǎo)航系統(tǒng)、物理系統(tǒng)、腳本開(kāi)發(fā)、UI界面系統(tǒng)等大部分內(nèi)容模塊。從主角簡(jiǎn)單漫游過(guò)渡到游戲的交互,從單一的功能實(shí)現(xiàn)過(guò)渡到項(xiàng)目的綜合優(yōu)化,讓學(xué)生在實(shí)現(xiàn)游戲基本功能的基礎(chǔ)上,學(xué)會(huì)對(duì)項(xiàng)目進(jìn)行個(gè)性化的拓展[4],實(shí)現(xiàn)學(xué)生知識(shí)水平與實(shí)踐能力的同步提升。

        “叢林尋寶”項(xiàng)目設(shè)計(jì)的總體思路是:玩家控制游戲主角跑動(dòng),在規(guī)定的時(shí)間內(nèi)主角撿拾寶石取得設(shè)定的積分值,游戲勝利;但途中會(huì)遭遇敵人的襲擊,一旦主角血量耗盡,游戲失敗。具體游戲規(guī)則如下。

        ⑴ 運(yùn)行游戲進(jìn)入開(kāi)始界面,可以查看游戲的說(shuō)明文字,點(diǎn)擊“開(kāi)始游戲”按鈕,進(jìn)入游戲場(chǎng)景,場(chǎng)景上方會(huì)顯示當(dāng)前的積分、主角的血量進(jìn)度條、倒計(jì)時(shí)。

        ⑵ 玩家單擊地面,主角會(huì)朝點(diǎn)擊的位置前進(jìn),主攝像機(jī)也會(huì)跟隨移動(dòng),使玩家始終保持適當(dāng)?shù)囊曇胺秶?。主角在行進(jìn)中尋找掩埋在場(chǎng)景各處的寶石,觸碰到寶石會(huì)取得相應(yīng)的積分,積分達(dá)到設(shè)定值,會(huì)出現(xiàn)“游戲勝利”的提示。

        ⑶ 主角在行進(jìn)中如遭遇敵人,玩家右擊敵人,可以從攝像機(jī)位置朝敵人發(fā)射弓箭,敵人中箭會(huì)死亡,并播放音效。

        ⑷ 主角在行進(jìn)中如果接近敵人,會(huì)遭到敵人的襲擊,主角血量會(huì)相應(yīng)的減少,如果血量減到零,或者倒計(jì)時(shí)為零,會(huì)出現(xiàn)“游戲失敗”的提示。

        2.2 主要功能模塊設(shè)計(jì)

        系統(tǒng)功能模式用來(lái)控制整個(gè)項(xiàng)目的運(yùn)行。根據(jù)游戲規(guī)則,本項(xiàng)目中的系統(tǒng)功能有:開(kāi)始游戲、計(jì)時(shí)控制、積分顯示、血量顯示、游戲成功、游戲失敗、重新開(kāi)始、背景音樂(lè)、退出游戲。如圖1所示。

        該項(xiàng)目主要的游戲物體有主角、敵人、寶石以及主攝像機(jī)。游戲圍繞著這幾個(gè)主要物體來(lái)設(shè)計(jì),其中主角和敵人的功能模塊如圖2所示。游戲主角的功能模塊有移動(dòng)控制、撿拾寶石、射擊敵人、血量控制、積分控制。游戲中敵人的功能模塊有移動(dòng)邏輯、攻擊邏輯、死亡控制、音效控制。寶石的功能模塊僅有被撿拾后銷(xiāo)毀,主攝像機(jī)的功能模塊主要有跟隨主角。

        3 “叢林尋寶”教學(xué)項(xiàng)目的實(shí)現(xiàn)

        3.1 場(chǎng)景設(shè)計(jì)與搭建

        本項(xiàng)目中的游戲場(chǎng)景從創(chuàng)建地形開(kāi)始,包括利用地形工具創(chuàng)建高山、湖泊、盆地、花、草、樹(shù)、天空盒子、風(fēng)、霧,利用粒子系統(tǒng)和動(dòng)畫(huà)系統(tǒng)制作燃燒的火焰等。學(xué)生可以根據(jù)自己的設(shè)想,來(lái)創(chuàng)建游戲場(chǎng)景和布置光源,但要保證包含所有項(xiàng)目所需的元素。游戲中的寶石需要導(dǎo)入在3Dmax軟件中創(chuàng)建的模型,游戲中的寶石、敵人、弓箭使用的數(shù)量較多,都需要?jiǎng)?chuàng)建相應(yīng)的預(yù)制體。可以通過(guò)把場(chǎng)景中的物體拖進(jìn)project面板中來(lái)實(shí)現(xiàn)預(yù)制體的創(chuàng)建。

        3.2 倒計(jì)時(shí)的實(shí)現(xiàn)

        游戲開(kāi)始時(shí)系統(tǒng)開(kāi)啟倒計(jì)時(shí),游戲剩余的時(shí)間會(huì)顯示在游戲界面右上角,并實(shí)時(shí)更新。當(dāng)剩余時(shí)間為零時(shí),游戲停止。主要代碼如下:

        void Time_Control() {

        leftTime -= Time.deltaTime;

        // leftTime為遞減的游戲剩余時(shí)間

        Timetext.GetComponent().text=leftTime.ToString();

        //剩余時(shí)間顯示

        if (leftTime<=0) { Time.timeScale=0;

        loseUI.SetActive(true); } } //游戲失敗

        3.3 射線(xiàn)檢測(cè):主角的移動(dòng)與射擊控制

        ⑴ 主角的移動(dòng)。游戲規(guī)則中要求單擊地面時(shí)能夠引導(dǎo)主角的行進(jìn),并要對(duì)主角行動(dòng)的區(qū)域做合理的限定。Unity自帶的尋路即導(dǎo)航系統(tǒng)利用導(dǎo)航網(wǎng)格描述游戲世界的可行走表面,主角需要添加導(dǎo)航組件后才可以在導(dǎo)航網(wǎng)格中自動(dòng)繞開(kāi)障礙進(jìn)行尋路。鼠標(biāo)單擊地面進(jìn)行主角行動(dòng)的引導(dǎo)使用的是射線(xiàn)檢測(cè),Unity的物理引擎為我們提供了相關(guān)射線(xiàn)類(lèi)以及函數(shù)接口,我們需要自行調(diào)用這些API來(lái)實(shí)現(xiàn)一條射線(xiàn)[5]。射線(xiàn)與地面碰撞點(diǎn)作為導(dǎo)航網(wǎng)格代理組件的目標(biāo)地,當(dāng)前物體會(huì)自動(dòng)尋路到這個(gè)位置。在行走過(guò)程中,想要實(shí)現(xiàn)人物自然的走動(dòng)和轉(zhuǎn)向,還需要?jiǎng)?chuàng)建Animator Controller動(dòng)畫(huà)控制器,通過(guò)speed速度的不同值設(shè)置主角idle、walk、run三個(gè)動(dòng)畫(huà)剪輯的切換,如圖3所示。主要代碼如下:

        if (Input.GetMouseButtonDown(0)) {

        Ray ray=Camera.main.ScreenPointToRay

        (Input.mousePosition);

        RaycastHit hit;

        if(Physics.Raycast(ray, out hit))

        { agent.SetDestination(hit.point); } //設(shè)置agent的目標(biāo)地

        anim.SetFloat("speed", agent.velocity.magnitude);

        //給speed參數(shù)賦值

        ⑵ 射擊控制。本項(xiàng)目中射擊敵人的弓箭是由攝像機(jī)位置發(fā)出來(lái)的,射擊腳本賦予主攝像機(jī)或者空物體,這里也運(yùn)用了射線(xiàn)檢測(cè)。鼠標(biāo)右擊的點(diǎn)就是弓箭射擊的目標(biāo),需要注意的是要使箭頭保持指向鼠標(biāo)點(diǎn)擊的方向,射擊的同時(shí)伴有音效。主要代碼如下:

        if (Input.GetMouseButtonDown(1)) {

        Ray cameraRay=Camera.main.ScreenPointToRay

        (Input.mousePosition);

        GameObject Arrow=Instantiate(arrow, cameraRay

        .origin, arrow.transform.rotation) as GameObject;

        //弓箭產(chǎn)生

        Arrow.GetComponent().velocity=

        cameraRay.direction * speed; }

        3.4 碰撞檢測(cè):撿拾寶石與互相攻擊

        ⑴ 主角撿拾寶石與被攻擊。主角撿拾寶石以及被敵人砍到的判斷都需要用到碰撞檢測(cè)。Unity中的兩個(gè)物體要想發(fā)生碰撞,必須依賴(lài)于自身的碰撞器組件,其中附帶碰撞檢測(cè)腳本的物體必須有剛體組件。Unity中的碰撞檢測(cè)主要有碰撞信息檢測(cè)和觸發(fā)信息檢測(cè)兩種接口函數(shù)[6],為了消除碰撞對(duì)主角的影響,在這里使用觸發(fā)信息檢測(cè)中的OnTriggerEnter函數(shù),來(lái)檢測(cè)物體的名稱(chēng)或標(biāo)簽。當(dāng)碰撞到寶石(標(biāo)簽為diamond),積分變量score相應(yīng)自增,當(dāng)碰撞到敵人的武器(名稱(chēng)為weapon),血量相應(yīng)減少。用bloodvalue變量來(lái)代表界面中血條(Slider控件)的value值。主角撿拾寶石與被攻擊時(shí)的主要代碼如下:

        void OnTriggerEnter(Collider other)

        { if (other.gameObject.tag == "diamond")

        { score+=2; } //積分自增

        if (other.gameObject.name == "weapon")

        { GameManager.bloodvalue -=5; } }? //血量自減

        ⑵ 敵人被弓箭射擊。敵人被弓箭射擊與主角被敵人的武器攻擊類(lèi)似,不同的是敵人被弓箭射中之后有倒地死亡的動(dòng)畫(huà)播放,所以這里使用的是OnCollisionEnter碰撞信息檢測(cè)函數(shù)。主要代碼如下:

        void OnCollisionEnter(Collision collisionInfo)

        { if (collisionInfo.gameObject.tag == "arrow")

        { isdead = true; } } //切換到死亡動(dòng)畫(huà)剪輯

        3.5 敵人攻擊的邏輯

        本項(xiàng)目初始設(shè)計(jì)中的敵人是隨機(jī)分布在場(chǎng)景各處,敵人有徘徊、跑動(dòng)、攻擊、死亡四個(gè)動(dòng)畫(huà)剪輯可以進(jìn)行切換,只有當(dāng)主角比較接近的時(shí)候,敵人才會(huì)朝主角的方向跑動(dòng),當(dāng)距離小于二米時(shí)就會(huì)近身砍殺,被弓箭射中會(huì)死亡。敵人進(jìn)行攻擊的主要代碼如下:

        if (distance<2f) { this.transform.LookAt(player.transform);

        animator.SetBool("isrun", false); //停止跑動(dòng)

        animator.SetBool("ishit", true); }} //啟動(dòng)攻擊動(dòng)畫(huà)

        3.6 攝像機(jī)跟隨

        用Unity腳本來(lái)控制攝像機(jī)跟隨游戲元素。調(diào)整攝像機(jī)位置在主角上方合適的位置,讓攝像機(jī)與主角一直保持相同的距離,這樣就做到了攝像機(jī)一直跟隨主角移動(dòng),主要代碼如下:

        void Start ()

        { offset = transform.position - player.position; }

        void Update ()

        { transform.position = offset + player.position; }

        3.7 UI制作與系統(tǒng)控制

        ⑴ UI界面的制作。Unity提供了一套很完整的圖形化界面引擎。本項(xiàng)目中將開(kāi)始界面、積分和血量顯示界面、游戲成功界面、游戲失敗界面分別設(shè)計(jì)為四個(gè)不同的Panel面板組件,用代碼來(lái)控制他們的顯示和隱藏。

        ⑵ 開(kāi)始游戲。初始是暫停狀態(tài),將Time.timeScale設(shè)為0或1可以很方便的將游戲進(jìn)度暫?;蜷_(kāi)啟。等待玩家點(diǎn)擊“開(kāi)始游戲”按鈕,游戲正式開(kāi)啟,主要代碼如下:

        void Start() { Time.timeScale=0; }

        public void readygo() { Time.timeScale=1;

        readyUI.SetActive(false); } //隱藏準(zhǔn)備界面

        ⑶ 積分顯示與游戲勝利。主要代碼如下:

        void iswin()

        { Scoretext.GetComponent().text=score;

        if (score>=100)

        { Time.timeScale=0; winUI.SetActive(true); } }

        ⑷ 血量顯示與游戲失敗。主要代碼如下:

        void islose()

        { bloods.GetComponent().value=bloodvalue;

        if (bloodvalue<=0)

        { Time.timeScale=0; loseUI.SetActive(true); } }

        4 結(jié)束語(yǔ)

        本項(xiàng)目作為Unity3D引擎開(kāi)發(fā)的教學(xué)項(xiàng)目,將多個(gè)知識(shí)點(diǎn)有機(jī)地融合在一起,難度也根據(jù)學(xué)生的知識(shí)儲(chǔ)備和認(rèn)知規(guī)律來(lái)確定。讓學(xué)生在項(xiàng)目實(shí)踐中掌握Unity3D的主要知識(shí)點(diǎn)和項(xiàng)目開(kāi)發(fā)流程,可以對(duì)教學(xué)項(xiàng)目做適度擴(kuò)展,在教學(xué)實(shí)踐中取得了較好的效果,在一定程度上彌補(bǔ)了課程教學(xué)資源的不足,也為相關(guān)課程的教學(xué)提供了借鑒。后續(xù)可以在實(shí)際教學(xué)中對(duì)此項(xiàng)目不斷進(jìn)行創(chuàng)新和迭代升級(jí),添加更多的功能模塊,如主角的爬高控制、變換場(chǎng)景、設(shè)置游戲等級(jí)、批量生產(chǎn)敵人等。既讓玩家具有更好的游戲體驗(yàn),也能讓學(xué)生進(jìn)行更深入的學(xué)習(xí)。

        參考文獻(xiàn)(References):

        [1] 中華人民共和國(guó)中央人民政府網(wǎng).中華人民共和國(guó)國(guó)民

        經(jīng)濟(jì)和社會(huì)發(fā)展第十四個(gè)五年規(guī)劃和2035年遠(yuǎn)景目標(biāo)綱要[EB/OL].[2021-03-13].http://www.gov.cn/xinwen/2021-03/13/content_5592681.htm.

        [2] 陳小紅,張銀巧.高職虛擬現(xiàn)實(shí)應(yīng)用技術(shù)專(zhuān)業(yè)課程體系構(gòu)建

        研究[J].職業(yè)技術(shù),2021,20(10):99-103

        [3] 周玉珍.基于項(xiàng)目式教學(xué)培養(yǎng)中職學(xué)生高階思維能力的

        研究與實(shí)踐[D].碩士,貴州師范大學(xué),2020

        [4] 汪秀珍,段俊霞.SolidWorks三維設(shè)計(jì)課程的項(xiàng)目式教學(xué)

        實(shí)踐[J].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報(bào),2021,33(4):94-96

        [5] 曹曉明.Unity3D游戲設(shè)計(jì)與開(kāi)發(fā)[M].北京:清華大學(xué)出版

        社,2019

        [6] 劉國(guó)柱.Unity3D/2D游戲開(kāi)發(fā)從0到1(第二版)[M].北京:

        電子工業(yè)出版社,2018

        猜你喜歡
        項(xiàng)目式教學(xué)虛擬現(xiàn)實(shí)
        論虛擬現(xiàn)實(shí)藝術(shù)的“沉浸”
        REALITY BITES
        風(fēng)口上的虛擬現(xiàn)實(shí)
        商周刊(2017年24期)2017-02-02 01:42:55
        民辦本科高校新聞專(zhuān)業(yè)項(xiàng)目教學(xué)的實(shí)踐與思考
        今傳媒(2016年12期)2017-01-09 22:12:28
        論項(xiàng)目教學(xué)在高職計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)專(zhuān)業(yè)課程教學(xué)中的應(yīng)用
        初中生物項(xiàng)目式學(xué)習(xí)活動(dòng)的探索
        虛擬現(xiàn)實(shí)技術(shù)向科幻小說(shuō)借靈感
        海外星云(2016年7期)2016-12-01 04:18:00
        高職《液壓技術(shù)》課程教學(xué)改革探索
        科技視界(2016年22期)2016-10-18 17:25:54
        機(jī)制專(zhuān)業(yè)MATLAB軟件課程項(xiàng)目式教學(xué)研究
        考試周刊(2016年26期)2016-05-26 21:08:33
        《現(xiàn)場(chǎng)總線(xiàn)應(yīng)用技術(shù)》課程改革與探索
        科技視界(2016年5期)2016-02-22 19:45:46
        337p西西人体大胆瓣开下部| 一区二区三区午夜视频在线观看| 在线亚洲精品一区二区三区| 国产香蕉一区二区三区在线视频| 欧美成免费a级毛片| 国产乱子伦精品无码码专区| 中文字幕亚洲综合久久| 免费人妻精品一区二区三区| 国产精品 无码专区| 最近最好的中文字幕2019免费| 国产欧美另类精品久久久| 日本一区二区高清视频| 人人妻人人澡人人爽欧美一区| 人妻中文无码久热丝袜| 欧美成人a在线网站| 毛片色片av色在线观看| 国产一区二区三区在线观看完整版 | 无码成人aaaaa毛片| 亚洲精品亚洲人成在线下载| 国产精品天堂在线观看| 久久99精品久久久久久琪琪| 好吊色欧美一区二区三区四区| 在线观看国产内射视频| 日本精品中文字幕人妻| 亚洲av中文无码乱人伦在线咪咕 | 五月激情四射开心久久久| 无码人妻丰满熟妇区bbbbxxxx | 91av手机在线观看| 日韩人妻系列在线视频| 中文字幕人妻少妇伦伦| 亚洲av麻豆aⅴ无码电影| 日韩亚洲制服丝袜中文字幕| 97中文乱码字幕在线| 国产色系视频在线观看| 天堂网www在线资源| 亚洲一区二区女优av| 日韩精品中文一区二区三区在线| 黄色a级国产免费大片| 亚洲天天综合色制服丝袜在线| 成人大片在线观看视频| 中文字幕一区日韩精品|