日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

unity3d模拟树叶飘动_Unity3D独立游戏开发日记(一):动态生成树木

發(fā)布時(shí)間:2023/12/15 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 unity3d模拟树叶飘动_Unity3D独立游戏开发日记(一):动态生成树木 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目前寫的獨(dú)立游戲是一個(gè)沙盒類型的游戲。游戲DEMO視頻如下:

提到沙盒類型的游戲,就有人給出了這樣的定義:

游戲世界離現(xiàn)實(shí)世界越近,自由度、隨機(jī)度越高才叫沙盒游戲。所謂自由度,就是你在游戲里想干啥就干啥,想開車就開車,想走路就走路。想蓋房子就蓋房子,沒有城管來(lái)找你麻煩。那么隨機(jī)度,就是每天發(fā)生的事情不能一樣,做的任務(wù)也不會(huì)就一條線路可走。

在我的沙盒游戲里,地形上的樹木,巖石等都是隨機(jī)生成的,這樣不同的人玩的地圖都會(huì)不一樣。當(dāng)然如果最后能做到地形也隨機(jī)生成那就更完美了。

下面我就講下樹木隨機(jī)生成在地圖上的原理。

在unity3d里要想動(dòng)態(tài)生成一個(gè)GameObject,那需要使用Instantiate函數(shù)加載樹木的模型組件到指定的坐標(biāo)位置上。

我們的實(shí)現(xiàn)步驟如下:

1.在unity3d里的Assets目錄下創(chuàng)建Prefabs文件夾,然后在其中創(chuàng)建Resources(重要:不然無(wú)法用代碼動(dòng)態(tài)加載)子文件夾,再把樹木的模型預(yù)制件放入其中。

2.使用Instantiate函數(shù)動(dòng)態(tài)加載樹木預(yù)制件

var itemResource = Resources.Load("Tree"+i);?? //I是可變隨機(jī)數(shù)

GameObject itemObj = Instantiate(itemResource, new Vector3(X, Y, Z), Quaternion.identity) as GameObject;

3.使用循環(huán)改變i的值,以及改變X,Y,Z的值。

要注意的是i的值范圍,要和樹木預(yù)制件的編號(hào)匹配。X,Y,Z的值也要控制在地圖地形空間范圍內(nèi)。

按照這樣的思路,我們很快就能隨機(jī)生成樹木了。但是仔細(xì)想想這樣就可以了么?我們的X,Y,Z是隨機(jī)的坐標(biāo)值,其中Y的值是游戲世界里的高度值。如果Y的值隨機(jī)出來(lái)的值過(guò)大或者過(guò)小(相對(duì)于地表高度而言),那么就悲劇了,樹木不是長(zhǎng)在天上,就是長(zhǎng)在地底下。

怎么才能讓樹木剛好長(zhǎng)在地表高度上呢?這是我們遇到的難點(diǎn)問(wèn)題。如果有一個(gè)函數(shù)剛好能找到隨機(jī)出的坐標(biāo)位對(duì)應(yīng)的Y軸線和地標(biāo)相交接的那個(gè)點(diǎn)的Y的值就好了。通俗的講,就是要獲取,方位在X,Z時(shí),地表所在的Y值。

按照這個(gè)思路我們就找到了一個(gè)函數(shù),求指定坐標(biāo)對(duì)應(yīng)地面高度的函數(shù):Terrain.activeTerrain.SampleHeight(position)。

這樣我們就得到地表對(duì)應(yīng)的Y的值了:Y=Terrain.activeTerrain.SampleHeight(new Vector3(X,Y,Z))。

剩下的時(shí)間就是碼代碼的時(shí)間了,把核心難題解決了,后面的就簡(jiǎn)單了。不過(guò)需要注意的是,如果地形不是用Terrain組件來(lái)創(chuàng)建的,而是用的美工模型的話,就需要使用射線(Ray)來(lái)找到射線和地標(biāo)相交的點(diǎn)。

PS:游戲DEMO試玩群:198035671? Unity3d技術(shù)交流群:308185833? 斗魚游戲開發(fā)直播地址:www.douyutv.com/unity3d

總結(jié)

以上是生活随笔為你收集整理的unity3d模拟树叶飘动_Unity3D独立游戏开发日记(一):动态生成树木的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。