溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Catlike學(xué)習(xí)筆記(1.1)-使用Unity實(shí)現(xiàn)一個鐘表

發(fā)布時間:2020-06-28 10:28:22 來源:網(wǎng)絡(luò) 閱讀:522 作者:snatic 欄目:游戲開發(fā)

最近發(fā)現(xiàn)『Catlike系列教程』覺得內(nèi)容真的很贊,感覺有很多地方涉及到了我的知識盲點(diǎn),如果真的可以照著做下來一遍的話應(yīng)該收獲頗豐。因?yàn)榻坛毯荛L所以逐字翻譯不太可能了(主要是翻譯的太差)?;旧暇褪前褜?shí)現(xiàn)的思路記錄下來最后甩一個 「Github Repo」這樣就可以了。理論上來說第一篇比較簡單,感興趣的同學(xué)可以移步「原文鏈接」

PART 1 概述

實(shí)現(xiàn)一個鐘表的話我們的目標(biāo)就是

  • 用一個拍扁的圓柱體制作表盤,用立方體制作刻度和時針分針,用一個細(xì)長的圓柱體制作秒針
  • 寫點(diǎn) c# 腳本使其顯示為當(dāng)前時間
  • 加點(diǎn)動畫讓指針平滑運(yùn)動

PART 2 制作場景

大家都是 Unity 熟手了所以具體制作流程就不講了,博主自己也沒仔細(xì)看就按照自己想法做了一個差不多的,具體思路就是多設(shè)一個層級然后父節(jié)點(diǎn)只旋轉(zhuǎn)就可以把指針轉(zhuǎn)到相應(yīng)的位置而不需要同時調(diào)整 Rotation 和 Position。如果不是很懂的話可以回到「原文地址」里面有更詳細(xì)的做法,或者到我的「Github Repo」下載下來看看。

Catlike學(xué)習(xí)筆記(1.1)-使用Unity實(shí)現(xiàn)一個鐘表

PART 3 寫腳本控制指針

首先建立一個新的 MonoBehaviour 腳本比如說 ClockController.cs 之類的,把時針分針秒針的 Transform 的引用拖到腳本里,然后開始設(shè)置各個指針的位置。

那么眾所周知表盤的360度被分割成12塊所以每一塊也就是每個小時占據(jù)了 360 / 12 = 30 度。同理每分鐘占據(jù)了 360 / 60 = 6 度,每秒鐘也是。那么直觀來說就是這樣寫。

void Update()
{
    _hourArm.localEulerAngles = new Vector3(0, DateTime.Now.Hour * 30, 0);
    _minuteArm.localEulerAngles = new Vector3(0, DateTime.Now.Minute * 6, 0);
    _secondArm.localEulerAngles = new Vector3(0, DateTime.Now.Second * 6, 0);
}

然而運(yùn)行一下會發(fā)現(xiàn)時針和分針都是筆直的指向其所在的時間。。如下圖所示

Catlike學(xué)習(xí)筆記(1.1)-使用Unity實(shí)現(xiàn)一個鐘表

好吧現(xiàn)在剛好七點(diǎn)鐘貌似看不出來,總之就是需要在比如 6:30 的時候時針應(yīng)該指向 6 和 7 之間。所以這個度數(shù)需要再加上一點(diǎn)偏移,變成下面這樣。

void Update()
{
    var hour = DateTime.Now.Hour;
    var minute = DateTime.Now.Minute;
    var second = DateTime.Now.Second;
    var milisecond = DateTime.Now.Millisecond;
    _hourArm.localEulerAngles = new Vector3(0, hour * 30 + minute  / 60f * 30f, 0);
    _minuteArm.localEulerAngles = new Vector3(0, minute * 6 + second / 60f * 6f, 0);
    _secondArm.localEulerAngles = new Vector3(0, second * 6 + milisecond / 1000f * 6f, 0);
}

就可以輕松實(shí)現(xiàn)文章里的各種平滑移動之類的~

Catlike學(xué)習(xí)筆記(1.1)-使用Unity實(shí)現(xiàn)一個鐘表

PART 4 總結(jié)

沒有完全按照「原文」中的寫法來寫好像這樣會更簡潔一點(diǎn),然后大家應(yīng)該也會更容易理解,不過作者的主要用意可能是想展示 coroutine 之類的吧不管那些了~總之大家可以進(jìn)入「Github Repo」查看全部代碼和運(yùn)行 Demo。


原文鏈接:https://snatix.com/2018/06/06/019-gameobject-and-scripts//

本文由 sNatic 發(fā)布于『大喵的新窩』 轉(zhuǎn)載請保留本申明

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI