unity3d游戏开发之角色控制器,忽略碰撞,射线.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:6 大小:187KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

unity3d游戏开发之角色控制器,忽略碰撞,射线.doc

unity3d游戏开发之角色控制器,忽略碰撞,射线.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

一、角色控制器(CharactorController)角色控制器允许你在受制于碰撞的情况下很容易的进行运动,而不用处理刚体。角色控制器不受力的影响,仅仅当你调用Move函数时才运动。然后它将执行运动,但是受制于碰撞。Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作----CharactrController(角色控制器).首先要给游戏对象添加角色控制器,选中游戏对象,在Inspector->AddComponent->Physics->CharacterController举例:privateCharacterControllercontroller=null;//角色控制器对象privatefloatmoveSpeed=20.0f;//角色移动的速度voidStart(){//获取角色控制器对象controller=GetComponent<CharacterController>();}usingUnityEngine;usingSystem.Collections;publicclassPlayer2:MonoBehaviour{//如果用CharacterController(角色控制器),需要添加碰撞器CharacterControllercontroller;publicfloatspeed=10;voidStart(){controller=this.GetComponent<CharacterController>();}voidUpdate(){controller.SimpleMove(newVector3(Input.GetAxis("Horizontal")*speed,0,Input.GetAxis("Vertical")*speed));}}二、射线射线,类比的理解就是游戏中的子弹。是在3D世界里中一个点向一个方向发射的一条无终点的线。在发射的过程中,一旦与其他对象发生碰撞,就停止发射。Ray.origin:射线起点Ray.direction:射线的方向创建一条射线的方法Ray(origin:Vector3,direction:Vector3)Origin是射线的起点,direction是射线的方向。举例:usingUnityEngine;usingSystem.Collections;publicclassRayTest:MonoBehaviour{//UsethisforinitializationvoidStart(){}//UpdateiscalledonceperframevoidUpdate(){if(Input.GetMouseButton(0)){Rayray=Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线RaycastHithitInfo;if(Physics.Raycast(ray,outhitInfo)){Debug.DrawLine(ray.origin,hitInfo.point);//划出射线,只有在scene视图中才能看到GameObjectgameObj=hitInfo.collider.gameObject;Debug.Log("clickobjectnameis"+gameObj.name);if(gameObj.tag=="boot")//当射线碰撞目标为boot类型的物品,执行拾取操作{Debug.Log("pickup!");}}}}}三、忽略碰撞有些时候我们不想让指定的两对象发生碰撞,即要忽略他们的碰撞Physics.IgnoreCollision(ball.collider,this.collider);这篇文章来自HYPERLINK"http://www.gopedu.com/"狗刨学习网