unity3dのレイについての勉強
レイのクラスを見て見ましょう。RayRとaycastです。
Ray(Vector3?origin,?Vector3?direction)
レイ(光線)の表現(xiàn): 原點から方向ベクトルの方角に進(jìn)むレイを作成します。
void Update() {Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if (Physics.Raycast(ray, out hit, 100)) Debug.DrawLine(ray.origin, hit.point);}以下のように、いくつかオーバーロード関數(shù)があります。
static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
static function Raycast (origin : Vector3, direction : Vector3, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
static function Raycast (ray : Ray, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
static function Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
ディスクリプション:
シーンにあるすべてのコライダーに対して、?origin?の位置から?direction?の方向に?maxDistance?の距離だけレイを投じます。
FixedUpdate()関數(shù)で実行します。例:
void? FixedUpdate(){
????? Vector3 fwd = transform.TransformDirection (Vector3.forward);
???? ?if (Physics.Raycast (transform.position, fwd, 10)) {
???????//前方向で10ユニット距離
????? }
}
void? FixedUpdate(){
????? Vector3 fwd = transform.TransformDirection (Vector3.forward);
????? RaycastHit?hitInfo;?
???? ?if (Physics.Raycast (transform.position, fwd, out? hitinfo, 10)) {
???????//前方向で10ユニット距離
????? }
}
參考: http://blog.csdn.net/qq_15267341/article/details/62884312
視點トリガー:
??? void diaoYong(GameObject gameObj)
??? {
??????? timer += Time.deltaTime;
??????? LoadImage.GetComponent<Image>().fillAmount = 1- timer/coldTime;//從1到0減小
??????? if (timer >= coldTime) //轉(zhuǎn)圈剛轉(zhuǎn)完就執(zhí)行
??????? {
??????????? timer = 0;
??????????? gameObj.GetComponent<Button>().onClick.Invoke(); //觸發(fā)凝視目標(biāo)所綁定的方法
??????? }
??? }
總結(jié)
以上是生活随笔為你收集整理的unity3dのレイについての勉強的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: csdn 修改博客皮肤
- 下一篇: 串--串的定义,顺序、链式存储结构,BF