Unity色子的投擲和點(diǎn)數(shù)的獲得詳析
前言
前幾天需要一個(gè)色子的投擲并且獲得朝上點(diǎn)數(shù)的Unity腳本,在網(wǎng)上找了很多,都是一個(gè)模子刻出來的。
對(duì)于2018版的我來說,網(wǎng)上找的都是很早就棄用了的老版本。
好不容易能運(yùn)行了,結(jié)果并不理想,于是又突發(fā)奇想做了一個(gè)菜鳥專屬的色子。
大家可以參觀一下,實(shí)測(cè)Unity2018.1.1f能用。
話不多說先上圖。


場(chǎng)景的搭建我就不多說了,主要還是色子。
方法如下
首先,我們需要自己做出色子的六個(gè)面(我菜只想到這種方法,反正實(shí)現(xiàn)了就行)。

然后根據(jù)色子上的點(diǎn)數(shù)將每個(gè)面改名為一個(gè)特有的名字。
我這里為了方便直接用的1 2 3....來命名。
最后給他加上剛體Rigidbody讓色子更加真實(shí)。
PS:多出來的GameObject是為了調(diào)整他的中心點(diǎn),方便旋轉(zhuǎn)。

接下來,我們讓色子旋轉(zhuǎn)起來!
就當(dāng)鼠標(biāo)左鍵點(diǎn)擊使,分別給X,Y,Z方向上一個(gè)隨機(jī)值。
然后在色子當(dāng)前的位置上加上所需要旋轉(zhuǎn)的角度。
這里我們給了一個(gè)計(jì)時(shí)器timer,讓他旋轉(zhuǎn)兩秒。
if (Input.GetMouseButtonDown(0))
{
isdebug = true;
//取XYZ的隨機(jī)旋轉(zhuǎn)值
p_x = Random.Range(minrot, maxrot);
p_y = Random.Range(minrot, maxrot);
p_z = Random.Range(minrot, maxrot);
timer = 0.0f;//點(diǎn)擊后計(jì)時(shí)器清零
}
if(timer<2.0f)//規(guī)定 旋轉(zhuǎn)時(shí)間為兩秒
{
//旋轉(zhuǎn)色子
transform.Rotate(new Vector3(transform.rotation.x+p_x, transform.rotation.y + p_y, transform.rotation.z + p_z));
}
然后我們通過GetNum來獲取色子停止時(shí)向上的面的名字,
再根據(jù)名字得到它的點(diǎn)數(shù)。
這里由于我們直接設(shè)的數(shù)字,
將得到的名字轉(zhuǎn)化為int型就可以了。
void GetNum()
{
Transform[] obj=new Transform[6];//聲明數(shù)組存放色子的六個(gè)面
Transform upobj= transform.GetChild(0).GetChild(0);//聲明朝上的面
for(int i=0;i<6;i++)//循環(huán)判斷哪個(gè)面朝上
{
obj[i]=transform.GetChild(0).GetChild(i);
if(obj[i].position.y>upobj.position.y)
{
upobj = obj[i];
}
}
num = int.Parse(upobj.name);//將朝上面 的名字 轉(zhuǎn)化為int
}
接下來點(diǎn)擊左鍵,就可以獲取到我們的數(shù)據(jù)了。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
C#項(xiàng)目彩票選號(hào)實(shí)現(xiàn)思路
今天做了一個(gè)彩票選號(hào)的小軟件,將學(xué)到的知識(shí)點(diǎn)總結(jié)一下,下面通過本文給大家分享C#項(xiàng)目彩票選號(hào)實(shí)現(xiàn)思路,感興趣的朋友跟隨小編一起看看吧2024-08-08
WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新聞效果的方法
這篇文章主要介紹了WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新聞效果的方法,涉及WinForm窗口滾動(dòng)字幕設(shè)置的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
C#中ManualResetEvent實(shí)現(xiàn)線程的暫停與恢復(fù)
本文主要介紹了C#中ManualResetEvent實(shí)現(xiàn)線程的暫停與恢復(fù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C#串口通訊概念及簡(jiǎn)單的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于C#串口通訊概念及簡(jiǎn)單的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
C#語言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析
下面小編就為大家?guī)硪黄狢#語言基礎(chǔ)——結(jié)構(gòu)體和枚舉類型全面解析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07

