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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

3D场景中选取场景中的物体。

發布時間:2023/11/30 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3D场景中选取场景中的物体。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
楊航最近在學Unity3D

在一些經典的游戲中,需要玩家在一個3D場景中選取場景中的物體。例如《仙劍奇俠傳》,選擇要攻擊的敵人時、為我方角色增加血量、為我方角色添加狀態,通常我們使用鼠標來選擇一個目標物體,當鼠標移動到目標物體上時,目標物體將顯示輪廓線,此時就表示當前物體被選中,我們可以在此基礎上為游戲物體進行一系列的操作。那么,這一功能是如何在Unity3D中實現呢?

首先我們可以將問題分解為兩個子問題:第一,如何確定物體是否被選中;第二,物體被選中后如何清晰地傳達給用戶。

如圖是古劍奇譚和仙劍奇俠傳的戰斗畫面:

接下來,我們分別來解決這兩個問題。對于第一個問題,我們可以采取射線檢測的方法,即從攝像機向鼠標所在的位置發射射線,如果該射線擊中了游戲場景中的物體,我們就認為該物體被選中了。對于第二個問題,我們需要讓物體的輪廓線顯示出來,這是我們今天著重要研究的地方。在Unity3D中我們可以通過Shader 即著色器來實現更改材質的渲染方法。Unity3D內置了6類著色器,從簡單的VertexLit到復雜的帶有高光的視差凹凸貼圖(Parallax Bumped with Specular),共30個。其中:

1、Normal:適用于不透明的物體

2、Transparent:適用于半透明的物體,透明度由貼圖的alpha通道決定

3、TransparentCutOut:適用于某些部分透明,某些部分不透明的物體

4、Self-Illuminated:適用于需要自發光的物體

5、Reflective:適用于需要反射環境光的物體

6、Lightmapped:適用于需要添加光照貼圖及相應的UV坐標數值

從一般的意義上來說,著色器定義了渲染物體的方法、材質中指定的貼圖、用于渲染的頂點及片段著色程序、材質中調整的顏色以及各種數值設定。而相對應地,材質決定我們將使用那些貼圖來渲染、使用哪些顏色渲染等。在今天的文章中,我們將定義下面的著色器代碼:

?對于著色器程序的編寫,我們此時可以先放在一邊,這里我們著重來學習如何使用著色器來實現不同的渲染效果。我們新建一個材質,將該材質的著色器設置為我們這里編寫的著色器,如圖:

注意到這里的物體時沒有輪廓線的,因為我們這里使用的是默認材質Default-Diffuse。那么,接下來,我們通過編程的方式來動態更換材質,這樣就可以實現不同的渲染效果,編寫下面的腳本:

? ?在上面的這段腳本中,首先我們指定了三個材質,分別是適用于簡單物體(Cube等)的帶輪廓線的材質,適用于復雜物體(如人物模型)的帶輪廓線的材質(?本文未實現)、適用于簡單物體的默認材質。主要原理就是我們在文章開頭就提到過的射線檢驗方法。我們將這個腳本綁定到游戲場景中的物體上,設置好tag后就可以運行程序了,我們一起來看看程序的效果吧!

這就是我們今天想要實現的效果啦,通過今天的文章我們可以實現在3D場景中對一個物體的選取,這種需求在游戲里還是比較多的啊!希望大家好好學習并加以應用!

 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的3D场景中选取场景中的物体。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。