欢迎来到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/