新聞中心
bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float
distance, int layerMask)
在場(chǎng)景中投下可與所有碰撞器碰撞的一條光線,并返回碰撞的細(xì)節(jié)信息()。
bool Physics.Raycast(Ray ray, float distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit,float
distance, int layerMask)
當(dāng)光線投射與任何碰撞器交叉時(shí)為真,否則為假。
注意:如果從一個(gè)球型體的內(nèi)部到外部用光線投射,返回為假。
參數(shù)理解:
origin : 在世界坐標(biāo)中射線的起始點(diǎn)
direction: 射線的方向
distance: 射線的長(zhǎng)度
hit: 使用c#中out關(guān)鍵字傳入一個(gè)空的碰撞信息類,然后碰撞后賦值。可以得到碰撞物體的
transform,rigidbody,point等信息。
layerMask: 只選定Layermask層內(nèi)的碰撞器,其它層內(nèi)碰撞器忽略。 選擇性的碰撞
RaycastHit[] RaycastAll(Ray ray, float distance, int layerMask)
投射一條光線并返回所有碰撞,也就是投射光線并返回一個(gè)RaycastHit[]結(jié)構(gòu)體。
下面一個(gè)利用射線做的拾取的小例子(將代碼直接拖拽到主相機(jī)上)
using UnityEngine; using System.Collections; public class RayTest : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(Input.GetMouseButton(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//從攝像機(jī)發(fā)出到點(diǎn)擊坐標(biāo)的射線 RaycastHit hitInfo; if(Physics.Raycast(ray,out hitInfo)) { Debug.DrawLine(ray.origin,hitInfo.point);//劃出射線,只有在scene視圖中才能看到 GameObject gameObj = hitInfo.collider.gameObject; Debug.Log("click object name is " + gameObj.name); if(gameObj.tag == "boot")//當(dāng)射線碰撞目標(biāo)為boot類型的物品 ,執(zhí)行拾取操作 { Debug.Log("pick up!"); } } } } }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站題目:UnityPhysics.Raycast射線投射-創(chuàng)新互聯(lián)
URL標(biāo)題:http://fisionsoft.com.cn/article/doohgc.html