W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
射線是三維世界中一個點向一個方向發(fā)射的一條無終點的線,在發(fā)射軌跡中與其他物體發(fā)生碰撞時,它將停止發(fā)射。
射線應用范圍比較廣,廣泛應用于
例如,自動巡邏的敵人在視野前方發(fā)現(xiàn)玩家的時候會向玩家發(fā)起攻擊,這時候就需要使用射線了。
接下來我們通過一個案例來了解射線在游戲開發(fā)中的應用。
案例設(shè)計
在 Unity 3D 內(nèi)創(chuàng)建一個簡單的三維場景,場景內(nèi)放有 Cube
和 Plane
,Plane
用于充當?shù)孛妫?code>Cube 用于做拾取物體測試。
當單擊 Cube
時,它會發(fā)出一條射線,同時在 Console
面板中出現(xiàn) pick up
字樣。
案例實施
RayTest
。 using UnityEngine;
using System.Collections;
public class RayTest:MonoBehaviour{
void Update(){
if(Input.GetMouseButton(0)){
//從攝像機到單擊處發(fā)出射線
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if(Physics.Raycast(ray, out hitInfo)){
//畫出射線, 只有在Scene視圖中才能看到
Debug.DrawLine(ray.origin, hitInfo.point);
GameObject gameObj=hitInfo.collider.gameObject;
Debug.Log("click object name is"+gameObj.name);
//當射線碰撞目標的標簽是Pickup時, 執(zhí)行拾取操作
if(gameObj.tag=="Pickup"){
Debug.Log("pick up!");
}
}
}
}
}
首先創(chuàng)建一個 Ray 對象
,從攝像機發(fā)出到單擊處的射線。
Debug.DrawLine 函數(shù)
將射線可視化。接下來進行判斷,如果鼠標單擊的物體標簽是 Pickup
,則在控制面板中輸出 pick up
字樣。
Cube
添加 Pickup 標簽
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: