位置: 编程技术 - 正文

Unity3D研究之角色控制器组件研究(unity 设置物体角度)

编辑:rootadmin
Unity3D研究之角色控制器组件研究 Unity3D 封装了一个非常好用的组件来实现第一人称视角与第三人称视角游戏开发,我们称他为角色控制器组件,几乎不用写一行代码就可以完成一切的操作,神奇吧。 使用它的方法如下,首先打开Unity游戏引擎编辑器,然后在Project视图中右键选择Import Package -> Charactr Controller(角色控制器)把它导入我们的工程中。如下图所示,第一人称与第三人称的组建已经加入Project视图中。3rd Person Controller 表示第三人称控制器,First Person Controller表示第一人称控制器。 如下图所示,我们将FirstPerson Controller拖拽入Hierarchy(层次视图)中。由于角色控制器是具有一定物理引擎的,所以一定要将它放在地形或面对象之上,否则当它接收物理效果时发现地面没有东西支撑它,它就会掉下去。然后运行游戏你就会发现和CS中的第一人称效果非常相像, W、S、A、D移动人物行走,移动鼠标更改行走的方向,空&#;键人物会跳跃。 第一人称视角的实现原理是在游戏场景中创建了一个胶囊体的游戏对象,并且给胶囊体对象身上绑定了一个摄像机,摄像机对象如下图所示,它绑定在”Person Controller”中。这时场景中默认的摄像机就会失效,可以直接删掉默认的摄像机。通过按键控制这个胶囊体移动,通过鼠标修改胶囊体的朝向,此时你就会发现第一人称视角已经完全实现,目前为止我们不需要编写一行代码。目前场景中的天空盒子我是使用skyBox组件绑定在摄像机中,因为第一人称视角的摄像机对象在”Person Controller”中,所以需要将SkyBox组件绑定在这个摄像机中,如果绑定在默认摄像机中那么你将不会看到天空的效果。 下面我们在看看第三人称视角,如下图所示,在Project视图中将3rd Person Controller拖拽入Hierarchy视图中。第三人称视角需要使用我们原有的摄像机,如果刚刚将摄像机的删掉的话。在Hierarchy视图中点击Creat->Camera 即可。然后选择摄像机,在右侧Inspector视图中设置它的tag为MainCamera,如下图所示。最后在Hierarchy视图中选择3rd Person Controller,在右侧Inspector视图中将Third Person Camera 脚本的 Camera Transform 变量绑定上刚刚创建的主摄像机,此时运行游戏后以第三人称视角移动主角行走与跳跃,摄像机永远都会在跟随在后面除非修改角色控制器组件中默认提供的源码,源码都在右侧监测面板视图中直接点开就可以查看。 下面我们学习角色控制器组件在其它模型之间的应用。首先在Hierarchy视图中创建两个Cube(立方体对象) 命名为:Cube0(发出碰撞的对象)Cube1(接收碰撞的对象),然后在Hierarchy视图中选择Cube0对象,接着Unity导航菜单栏中选择Component(组件)-Character->选择任意一个角色控制属性。 补充一句,角色控制器组件一定要在Project视图中导入,否则这里将无法绑定组件。角色控制器组件因为与碰撞组件相互冲突,所以添加角色控制器组建后 Collider组件就会消失。下面我们实现一段简单得代码,使用添加过角色控制器组件的Cube0 去碰撞未添加角色控制器组件的Cube1。using UnityEngine;using System.Collections;public class Test : MonoBehaviour {//主动碰撞的对象名称string castName = null;//接收碰撞的对象名称string receiveName = null;void OnGUI () {if(castName!= null && receiveName !=null){//设置显示的颜色为黑色GUI.color = Color.black; //显示主动碰撞的对象 与接收碰撞的对象名称 GUI.Label(new Rect(,,,),"主动碰撞的对象名称"&#;castName); GUI.Label(new Rect(,,,),"接收碰撞的对象名称"&#;receiveName);}}//角色控制器组件在与具有Collider组件对象之间的碰撞void OnControllerColliderHit(ControllerColliderHit hit){//得到接收碰撞名称GameObject hitObject = hit.collider.gameObject;//当它不是地面时间if(!hitObject.name.Equals("Terrain")){//得到主动碰撞的对象 与接收碰撞的对象名称castName = gameObject.name;receiveName = hitObject.name;}}} 将上面这段代码绑定在Cube0中,运行游戏后W、A、S、D按键来控制Cube1立方体移动。当Cube0与Cube1发生碰撞时,程序将进入方法 OnControllerColliderHit(),通过参数就可以得到接收碰撞的游戏对象也就是Cube1对象,而gameObject就是当前主动发生碰撞的Cube1。如下图所示,当两个立方体碰撞时使用GUI已经将碰撞的信息打印出来。 接着我在说说刚体组件,默认在Unity中创建的模型是不具备接收物理引擎的,除非给模型添加刚体组件或角色控制器组件。我们先说说刚体,还用奋斗的小鸟来举例子。发射小鸟以后,小鸟以一个抛物线轨迹去撞击物体,发生碰撞后被碰撞的物体会根据小鸟撞击的角度以及力度发生不同的物理效果,并且几乎是完全模拟真实的物理引擎。但是这种物理引擎的效果不能绑定在比如RPG游戏的主角身上。原因很简单,因为刚体所添加的物理引擎太过于真实以至于会影响用户的对主角的操作,举个例子比如用户在控制主角移动时他碰撞到质量较大的物体,根据真实的物理引擎会被这个物体的反弹力把主角反弹回原位。但是这个是不符合逻辑的,因为刚体组件太过于物理话了,所以我们需要给主角添加角色控制器组件,它操作起来比较灵活,更容易让我们操作主角。 下面我们给Cube1对象绑定刚体组件,选择Cube1对象然后在导航菜单栏中选择Component->physics ->Rigidbody(刚体)。我们看看下面这段代码,使用添加了角色控制器组件的Cube0 去碰撞添加刚体组件的Cube1,当他生碰撞时计算一下Cube0碰撞Cube1时的碰撞角度向量,然后通过刚体向他施加一个力把它推开。using UnityEngine;using System.Collections;public class Test : MonoBehaviour {//角色控制器组件在与具有Collider组件对象之间的碰撞void OnControllerColliderHit(ControllerColliderHit hit){//判断碰撞的对象是否具备刚体组件GameObject hitObject = hit.collider.gameObject;Rigidbody rigidbody = hitObject.rigidbody;if(rigidbody != null && !rigidbody.isKinematic){//地面也具备刚体组件,这里判断一下if(!hitObject.name.Equals("Terrain") ){rigidbody.AddForce(new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z) * );}}}} 也可以将同样的脚本直接绑定在第三人称的角色控制器组件中。如下图所示,主角移动将周围的箱子都推开了。 总的来说角色控制器组件适用于 既需要感应物理引擎的支持但是又不能完全依赖与物理引擎,需要自己代码去编写一些东西的模型,所以非常适合游戏中主角对象的使用。

推荐整理分享Unity3D研究之角色控制器组件研究(unity 设置物体角度),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3D研究之角色控制器组件研究(unity 设置物体角度)

文章相关热门搜索词:unity study,unity3dterrain,unity study,unity3d gui,unity研究院,unity 设置物体角度,unity 设置物体角度,unity研究院,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity3d 赛车车辆各类性能算法 欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多Unity3D资源、Unity3D培训视频、Unity3D教程、Unity3D常见问题、Unity3D项目源码,【狗刨学习

TFC冯燃:手游市场细分领域新秀崛起 狗刨学习网报道/3月日上午,第十届TFC全球移动游戏大会在北京国际会议中心开幕。本届大会以寻路、跨界、融合为主题,吸引了超过位业内重量

Unity手机游戏录像、录音sdk介入(游戏陀螺WeRecSDK) 这东西不错,如果项目需要录像回放功能,可以使用。但是在介入之前建议先试试手动的

标签: unity 设置物体角度

本文链接地址:https://www.jiuchutong.com/biancheng/383600.html 转载请保留说明!

上一篇:如何在NGUI上显示粒子特效(csgo视角指令锁定枪械摇晃)

下一篇:Unity3d 赛车车辆各类性能算法(unity3d赛车游戏毕业设计)

  • 市政道路工程建筑包括什么
  • 全成本核算优缺点
  • 一般纳税人账务核算不健全如何税务处理
  • 物业公司广告费返还会计分录
  • 清算时实收资本怎么计算
  • 增值税季报还是月报
  • 普通发票作废要交税吗
  • 申报附加税增加一行如何增加
  • 出售股权账务处理
  • 房租收入如何缴税?
  • 销售奖金怎么做会计分录
  • 专项土地补偿款怎么入账?
  • 年金现值计算公式推导
  • 有发票和银行单据的区别
  • 购买可供出售金融资产的交易费用
  • 未完工的工程款怎么支付
  • 单位日常发的钱都有哪些
  • 个人独资企业个税税率表2023
  • 外购的货物用于集体福利是销售吗
  • 消费税征收范围注释
  • 零申报还需要交税吗
  • 违约支付工程款的违约金
  • 房地产开发公司注册资金要求
  • 事业单位财政拨款是什么意思
  • 无法访问移动网络怎么办
  • 开办费属于什么科目类别
  • Win11怎么隐藏底部
  • 银行保证金账务处理流程
  • win10电源管理器在哪
  • php://input用法
  • 工会捐款计入什么科目
  • 所得税分配表分录怎么写
  • 人工智能专业计算机科学与技术
  • 学摄影要交学费吗
  • 多线程的弊端
  • 人工智能大模型上市公司
  • 省外的发票能入账吗
  • 专项应付款二级明细科目有哪些
  • 股东投资款超过多少,必须股东会
  • 小规模纳税人减按1%账务处理
  • 如何更好的使用银行承兑汇票
  • 公司给员工租房进项税可以抵扣吗
  • c语言fread函数的用法示例
  • phpcms程序
  • Dedecms评论同时发到QQ邮箱的实现方法
  • 净利润弥补以前年度亏损
  • 财务的原始凭证
  • 企业转让无形资产的方式有
  • 金税四期上线企业还活吗
  • 房产公司结转成本的会计分录
  • 销售货物如何写凭证
  • 一般纳税人认定标准
  • 企业收到房租发票怎么做账
  • 发表文章开什么发票
  • 同一控股下并合并的股票
  • 会计凭证的填制与审核实训总结
  • 收到以前年度税费返还的会计分录
  • 购车融资是什么意思
  • 材料入库单金额写含税价吗
  • 开具旧税号也能认证成功
  • 物流公司会计工作内容
  • 只需要30秒让让你的电脑速度快一倍
  • windows7字体安装方法
  • mac系统制作
  • mac如何连接iphone
  • macbook快捷操作大全
  • WIN7如何关闭自动关机
  • win10触屏操作
  • win10小娜无法启动语音识别
  • win10能运行的单机游戏
  • 怎么用winrar打包压缩文件
  • unity图集
  • js网页自动化
  • python开发软件教程
  • 莱鸟人集团
  • 使用java
  • Python for Informatics 第11章之正则表达式(四)
  • 出口退税应退税额未发生变化 骗税
  • 税控专用设备包括哪些
  • 国家税务总局郴州
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设