詳談Unity物理射線Raycast()_心智圖擴展

不曉得當大家聽到物理射線一詞

腦海想到的畫面是捨麼

是這個.....(漫畫、電影看太多)






還是這個(物理學的不錯喔!!!)




在 Unity中提供了這麼一個物理引擎模擬

我們在不久前有講到一個 關於 teleport的運用(習自老師課堂)


簡單來講所謂  物理射線

就是  從 起始點   發射   射出一根永無止盡的光束(線段)

若有打中就生成碰撞 ,並消逝


先跟大家大致講述一下這次示範小型測試範例
關係圖主要是長成這樣




輸入部分控制


程式添加目標物








開始寫這次程式

我們這次用 按下滑鼠左鍵發射雷射

程式碼部分:


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RaycastTest : MonoBehaviour {
    private Ray ray;            //射線
    private RaycastHit hit;     //碰撞資訊

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        //Step1.按下鼠標左鍵發射射線.
        if (Input.GetMouseButtonDown(0))
        {
            //使用主攝像機創建一根射線.射線的方向是我們鼠標點擊的位置.
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            //Step2.使用物理類檢查射線的碰撞,有打中回傳true
            //總共有16個override method(這裡用第三種)
            if (Physics.Raycast(ray, out hit))
            {
                //將碰撞到的物體給銷毀.
                GameObject.Destroy(hit.collider.gameObject);//物體消滅
                Debug.Log("你打中方塊了");
            }
        }
    }
}





介面工具環境部分:



執行起來就是 滑鼠左鍵 點選到的方塊就消除了



測試完此功能是可以運作的



最後進行程式方法的 「函數封裝」


















留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header