天天看点

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