Unity3D游戏开发之角色控制器组件研究

Unity3D游戏开发之角色控制器组件研究

ID:39891189

大小:919.50 KB

页数:10页

时间:2019-07-14

Unity3D游戏开发之角色控制器组件研究_第1页
Unity3D游戏开发之角色控制器组件研究_第2页
Unity3D游戏开发之角色控制器组件研究_第3页
Unity3D游戏开发之角色控制器组件研究_第4页
Unity3D游戏开发之角色控制器组件研究_第5页
资源描述:

《Unity3D游戏开发之角色控制器组件研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Unity3D封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作,神奇吧。使用它的方法如下,首先打开Unity游戏引擎编辑器,然后在Project视图中右键选择ImportPackage->CharactrController(角色控制器)把它导入我们的工程中。如下图所示,第一人称与第三人称的组建已经加入Project视图中。3rdPersonController表示第三人称控制器,FirstPersonController表示第一人称控制器。    如下图所示,我们将FirstPersonControl

2、ler拖拽入Hierarchy(层次视图)中。由于角色控制器是具有一定物理引擎的,所以一定要将它放在地形或面对象之上,否则当它接收物理效果时发现地面没有东西支撑它,它就会掉下去。然后运行游戏你就会发现和CS中的第一人称效果非常相像,W、S、A、D移动人物行走,移动鼠标更改行走的方向,空格键人物会跳跃。 第一人称视角的实现原理是在游戏场景中创建了一个胶囊体的游戏对象,并且给胶囊体对象身上绑定了一个摄像机,摄像机对象如下图所示,它绑定在”PersonController”中。这时场景中默认的摄像机就会失效,可以直接删掉默认的摄像机。通过按键控制这个胶囊体移动,通过鼠标修改胶囊体的朝向,此

3、时你就会发现第一人称视角已经完全实现,目前为止我们不需要编写一行代码。目前场景中的天空盒子我是使用skyBox组件绑定在摄像机中,因为第一人称视角的摄像机对象在”PersonController”中,所以需要将SkyBox组件绑定在这个摄像机中,如果绑定在默认摄像机中那么你将不会看到天空的效果。文章来自【狗刨学习网】 (点击图片查看大图)   下面我们在看看第三人称视角,如下图所示,在Project视图中将3rdPersonController拖拽入Hierarchy视图中。第三人称视角需要使用我们原有的摄像机,如果刚刚将摄像机的删掉的话。在Hierarchy视图中点击Creat->

4、Camera即可。然后选择摄像机,在右侧Inspector视图中设置它的tag为MainCamera,如下图所示。最后在Hierarchy视图中选择3rdPersonController,在右侧Inspector视图中将ThirdPersonCamera脚本的CameraTransform变量绑定上刚刚创建的主摄像机,此时运行游戏后以第三人称视角移动主角行走与跳跃,摄像机永远都会在跟随在后面除非修改角色控制器组件中默认提供的源码,源码都在右侧监测面板视图中直接点开就可以查看。(点击图片查看大图)  下面我们学习角色控制器组件在其它模型之间的应用。首先在Hierarchy视图中创建两个

5、Cube(立方体对象)命名为:Cube0(发出碰撞的对象)Cube1(接收碰撞的对象),然后在Hierarchy视图中选择Cube0对象,接着Unity导航菜单栏中选择Component(组件)-Character->选择任意一个角色控制属性。补充一句,角色控制器组件一定要在Project视图中导入,否则这里将无法绑定组件。角色控制器组件因为与碰撞组件相互冲突,所以添加角色控制器组建后Collider组件就会消失。下面我们实现一段简单得代码,使用添加过角色控制器组件的Cube0去碰撞未添加角色控制器组件的Cube1。 1234567891011usingUnityEngine;usi

6、ngSystem.Collections; publicclassTest:MonoBehaviour{ //主动碰撞的对象名称stringcastName=null; //接收碰撞的对象名称stringreceiveName=null; 12131415161718192021222324252627282930313233voidOnGUI()    { if(castName!=null&&receiveName!=null){//设置显示的颜色为黑色GUI.color=Color.black;    //显示主动碰撞的对象与接收碰撞的对象名称    GUI.Label(new

7、Rect(100,100,200,30),"主动碰撞的对象名称"+castName);    GUI.Label(newRect(100,200,200,30),"接收碰撞的对象名称"+receiveName);}} //角色控制器组件在与具有Collider组件对象之间的碰撞voidOnControllerColliderHit(ControllerColliderHithit){ //得到接收碰撞名称GameObjecthitObject=hit.co

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。