Unity3D開發飛盤射擊案例之角色控制(十六)

本節要點

1.鼠標控制手臂朝向

1.使用射線控制手臂朝向

主攝像機發射射線,與場景中的物體碰撞,獲取一個碰撞點,然后手臂“朝向”

這個點。


Transform.LookAt(Vector3):朝向(面向)世界中的一個點。


2.場景背景模型添加碰撞器組件

添加 Mesh Collider 組件,使用簡模進行碰撞檢測。

簡模模型的作用:降低物理運算資源消耗,提高游戲性能;


Vertices(verts):頂點個數,Mesh 網格是由頂點組成面,面組成體。

頂點個數越少,計算量越小。



3.控制手臂的旋轉軸

手臂應該是以肩關節為軸進行旋轉。

和 Unity 初級課程上部《瘋狂教室》案例中旋轉門的處理方式一樣,新建父物

體,通過父物體控制子物體。


4.Debug 繪制測試線

槍口到碰撞點直接繪制一根測試線。




Debug.DrawLine(Vector3, Vector3, Color):繪制線

和 Debug.DrawRay()用法一樣。




Transform.FindChild(string):在當前物體的子物體中查找游戲物體。

2.槍口添加激光特效

1.槍口位置添加 LineRenderer 組件

在槍口這個空游戲物體上添加 LineRenderer 組件,設置相關屬性。



LineRenderer.SetPosition(int,Vector3):設置線的位置。

int:位置的索引值;

Vector3:該位置所在的坐標值;


2.從其他項目中導出資源包

選中 Project 面板中相應的資源,然后鼠標右鍵-->Export Package...


關鍵代碼

Weapon

public class Weapon : MonoBehaviour {

    //手臂指向鼠標點擊的位置
    //聲明一個手臂位置的變量;
    private Transform m_transform;


    //利用射線去檢測
    //聲明一個射線的變量 聲明一個存貯射線信息存貯的變量
    private Ray ray;
    private RaycastHit hit;


    //定義一個槍口位置的變量;
    private Transform m_Point;




    //設置特效 線渲染器屬性組件 變量

   private LineRenderer m_LineRenderer;
    
    void Start () {
        //將Transform 位置賦值
        m_transform=gameObject.GetComponent<Transform>();

        //槍口位置賦值;
      //  m_Point = gameObject.transform.FindChild("Point").GetComponent<Transform>(); 
        m_Point = m_transform.FindChild("Point");


        //特效渲染器組件位置賦值;關鍵語法  利用槍口的位置設置; 先將查找到的組件 linerenderer 存貯起來

      m_LineRenderer = m_Point.gameObject.GetComponent<LineRenderer>();




    }
    
    
    void Update () {
    
        //使手臂朝向鼠標點擊的位置;

        //接收射線的變量  利用攝像機獲取射線并賦值;
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);//從屏幕發射到鼠標點擊的位置的射線;
        //進行物理檢測 
        if (Physics.Raycast(ray, out hit))
        {
            //控制手臂的方向
            //檢測成功后調用 游戲對象位置的  朝向 方法 lookat
           m_transform.LookAt(hit.point);//參數是碰撞點


            //檢查是否有碰撞;
            //Debug.Log("Collider");
            //場景中沒有任何碰撞體 或者打開場景的屬性檢查;所以手臂不會移動

            //因此 要添加網格碰撞器 選中 游戲物體 add component  加組件 mesh Collider; 
            //但是默認的有4千個頂點,ui設計的只有2千頂點的簡模 所以用ui的添加碰撞器



            //成功測試后,發現手的旋轉關節不對,就是手是手臂的中心點 可以定義一個父類來控制它 不要以為手臂的中心點來控制
            //建立一個父類,把之前的代碼組件移除  設置好父類坐標,將腳本掛載到父類組件去


            //繪制槍口發射線  
           //與繪制射線方法相同 Debug.DrawRay();
          // Debug.DrawLine(m_transform.position,hit.point,Color.red);//參數1: 起始位置 參數2:射線碰撞的位置 參數3:顏色;


        //射線出發的位置不對 所以定義一個空物體存貯槍口的位置 transform
            //怎么查找父類下的組件呢?
           //gameObject.transform.Find("Point");
            //如果游戲對象下面有N個叫Point的組件呢;所以我們只要查找父類下的組件名稱即可;
          // m_Point = gameObject.transform.FindChild("Point").GetComponent<Transform>(); // 這是賦值過程,寫到Start方法即可;

            //再次繪制射線;
           Debug.DrawLine(m_Point.position, hit.point, Color.red);


            //繪制特效線的位置;注意關鍵函數 
          m_LineRenderer.SetPosition(0,m_Point.position);//參數1:特效起始位置的下標 參數2:特效起始位置下標的位置 (槍口位置)
         m_LineRenderer.SetPosition(1,hit.point);//參數1:特效結束位置的下標 參數2:特效結束位置下標的位置 (射線碰撞點)




        }



    }
}


小結

Unity API.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,443評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,530評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,407評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,981評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,759評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,204評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,263評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,415評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,955評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,650評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,892評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,675評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容