天天看點

u3d學習之忽略碰撞、射線、角色控制器

歡迎來到unity學習社群

一、忽略碰撞

忽略碰撞适用于不想讓指定的兩個遊戲對象發生碰撞時

使用方法為:

public Transform ball;

void Start(){

 Physics.IgnoreCollision(ball.Collider,this.Collider);

}

這裡所聲明的的對象bb為非挂載的遊戲對象

u3d學習之忽略碰撞、射線、角色控制器
u3d學習之忽略碰撞、射線、角色控制器

二、射線

1、射線是一個無窮的線,開始于origin并沿着direction方向。

2、射線是用于與遊戲物體的碰撞,是向一個方向發射無終點的線

3、兩個必備的元素 Ray.origin 與Ray.direction 即一個終點 一個起點

4、射線用法總結如下:

    建立射線--》定義射線投射碰撞--》射線長度--》畫出射線

例子如下:

建立射線: Ray ray =new ray(Vector3.zero,transform.position);這裡參數為 一個為發射方向,一個為起始點

定義射線投射碰撞:RaycastHit hit;

射線長度: Physics.Raycast(ray,out hit ,1000);這是一個布爾值;

畫出射線:Debug.DrawLine(ray.origin,hit point,color.red);三個參數分别為起點,終點,射線的顔色

三、角色控制器 CharacterController

1、CharacterController中包含有Rigidbody元件的一些屬性,使用時不需要再去添加剛體Rigidbody

2、CharacterController不受力的影響,僅僅當調用move方法時才運動,但受制于碰撞

3、角色控制器允許你在受制于碰撞的情況下很容易的進行運動,而不用處理剛體。

4、添加角色控制器

void start(){

controller=GetComponent<CharacterController>();

}

5、CharacterController中包含有move與simplemove兩個移動方法

其中simplemove隻能實作x軸與z軸(之間)方向的移動而move可以實作任何方向的移動

例子如下

if (Input.GetKeyDown(KeyCode.W)){

Vector3 forward=transform.TransformDirection(Vector3.forward);

controller.Move(forward*moveSpeed);

}

if (Input.GetKeyDown(KeyCode.S)) {

Vector3 back=transform.TransformDirection(Vector3.forward);

controller.Move(back*-moveSpeed);

}

 更多精彩http://unity.gopedu.com/

U3D