歡迎來到unity學習社群
一、忽略碰撞
忽略碰撞适用于不想讓指定的兩個遊戲對象發生碰撞時
使用方法為:
public Transform ball;
void Start(){
Physics.IgnoreCollision(ball.Collider,this.Collider);
}
這裡所聲明的的對象bb為非挂載的遊戲對象

二、射線
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/