詳談Unity物理射線Raycast()_心智圖擴展
不曉得當大家聽到物理射線一詞
腦海想到的畫面是捨麼
是這個.....(漫畫、電影看太多)
還是這個(物理學的不錯喔!!!)
在 Unity中提供了這麼一個物理引擎模擬
我們在不久前有講到一個 關於 teleport的運用(習自老師課堂)
簡單來講所謂 物理射線
就是 從 起始點 發射 射出一根永無止盡的光束(線段)
若有打中就生成碰撞 ,並消逝
先跟大家大致講述一下這次示範小型測試範例
關係圖主要是長成這樣
輸入部分控制
程式添加目標物
開始寫這次程式
我們這次用 按下滑鼠左鍵發射雷射
程式碼部分:
介面工具環境部分:
執行起來就是 滑鼠左鍵 點選到的方塊就消除了
測試完此功能是可以運作的
最後進行程式方法的 「函數封裝」
腦海想到的畫面是捨麼
是這個.....(漫畫、電影看太多)
還是這個(物理學的不錯喔!!!)
在 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("你打中方塊了");
}
}
}
}
介面工具環境部分:
執行起來就是 滑鼠左鍵 點選到的方塊就消除了
測試完此功能是可以運作的
最後進行程式方法的 「函數封裝」
留言
張貼留言