一、角色控制器

U3D有两种角色控制方式:Rigidbody刚体、角色控制器组件(胶囊体组件)

面试的题目中经常会遇到这个问题:

  CharacterController和Rigidbody的区别?

  这样回答:CharacterController自带胶囊碰撞器,里面包含有刚体的属性;Rigidbody就是刚体,使物体带有刚体的特征。

  角色控制器组件常用于第一人称和第三人称的角色控制,使用角色控制器可以使人形角色实现移动、滑动、上下楼梯等动作,不是纯物理的,但是含有胶囊碰撞体,因此有碰撞检测。第一人称角色控制器:图形子物体、主摄像机物体。因视角特性第一人称是看不到自己的,主要帮助用户在场景中查看角色控制器的位置。

导入角色控制器

1、官方有关角色控制器定义:角色控制器允许你在受制于碰撞的情况下很容易的进行运动,而不用处理刚体。角色控制器不受力的影响,仅仅当你调用Move函数时才运动。然后它将执行运动,但是受制于碰撞。

2、摘自网络的Physx参考:

character一般用于主角这类用户控制的物体,它不会受到scene的重力影响,不会被其他物体推。

程序中可以使用它的move方法移动它,当他碰到静态物体时,会停下来,遇到动态物体时会推开他,当然,这些都是可以通过activegroup来控制的。group最多有32组。因为他是一个NxU32,并通过每一位代表一个组。

move的一个参数用来告诉程序,character的当前状态。(collisionFlags)

当他遇到物体的时候,如果设置了回调函数,系统会通过回调函数通知程序。。(NxControllerDesc.callback)

character还有上楼梯模式,在某些高度的台阶,可以直接上去。(NxControllerDesc.stepOffset)

character还可以设置可以走上去的斜坡。(NxControllerDesc.slopeLimit)

由于character不受场景的重力影响,所以,用户要在move函数中自己添加重力因素,也就是说,character可以浮在空中,除非那里有其他activegroup物体。

二、物理引擎介绍

  通过为刚性物体赋予真实的物理属性的方式来计算运动、旋转和碰撞反映

  刚体一般放在固定更新函数中执行FixedUpdate()

2.1、添加Constant Force(['kɒnstənt]adj. 不断的,持续的;)

把Rigibody 重力去掉Gravity,如果你的力大于重力可以勾选Gravity

变量值:

  Force:每帧应用力给刚体。

  Relative Force:该力相对于刚体坐标系统,在每帧中应用。

  Torque([tɔ:k]torque):每帧应用给刚体的力矩。

  Relative Troque:该力矩,相对于该刚体的坐标系统,在每帧中应用。

2.2、碰撞器

  动态碰撞器(添加了刚体组件RigidBody):Box Collider、 Capsure Collider、 Sphere Collider。
  静态碰撞器(无刚体组件RigidBody):Mesh Collider、 Terrain Collider。应用在位值不发生变化的物体中,环境物体、地形物体: 。注意:a、静态碰撞器的物体并不是一个钢铁,但确实应用在刚体运算中,b、刚体运动时 对于静态碰撞器一定不要进行逐帧运动变化或者运动,会对物理引擎重再计算影响性能。

Unity3D笔记 英保通六 角色控制器的更多相关文章

  1. Unity3D笔记 英保通四 虚拟轴应用及键盘事件

    Input: 1.使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据.想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal&q ...

  2. Unity3D笔记 英保通八 关节、 布料、粒子系统

    一.关节1.1..链条关节 Hinge joint :他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力 1.2.. ...

  3. Unity3D笔记 英保通二

    一.访问另一个物体 1.代码中定义一个public的物体 例如:var target:Transform; 在面板上直接拖拽一个物体赋值给target 2.通过GameObject.Find(&quo ...

  4. Unity3D笔记 英保通一

    一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...

  5. Unity3D笔记 英保通十 射线碰撞器检测

    射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断.还有对战中刀剑交战中.. 一.要涉及到RayCast和RayCastHit 1. ...

  6. Unity3D笔记 英保通九 创建数

    Unity中创建树:可以直接通过程序自动来创建树木还可以手动创建树木(本质上在我看来就是给程序自动创建的树动动”小手术“) 一.程序自动创建树木 3.1.层次视图中创建:一个平行光.摄像机.地.数并且 ...

  7. Unity3D笔记 英保通七 物理引擎

    给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...

  8. Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测

    一.如何使用GUI事件来检测鼠标是否按下的事件: 获取当前事件:var e:Event=Event.current: using UnityEngine; using System.Collectio ...

  9. Unity3D笔记 英保通三 脚本编写 、物体间通信

    一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...

随机推荐

  1. require.js初试(with angular & optimization)

    如果你只是想找一款称手的js加载器,可以参考这篇js loader benchmarks(http://artzstudio.com/files/Boot/test/benchmarks/script ...

  2. mysql中explain

    1.select_type: /* select_type 使用 SIMPLE */explain select * from tb_shop_order where id='201603292570 ...

  3. datetimerangepicker配置及默认时间段展示

    <script type="text/javascript"> $(document).ready(function (){ //时间插件 $('#reportrang ...

  4. Apache+php5

    .下载回来的是解压文件,解压好放到要安装的位置.(我这里以D:\Acpache24为例) .打开Apache24\conf下httpd.conf 文件,用记事本打开即可. ()第37行ServerRo ...

  5. jquery.fileupload插件 ie9下不支持上传

    根据https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support The following browsers support ...

  6. MongoDB使用经验总结

    摘要: 最近在开发项目使用了数据库MongoDB,我将它的使用方法整理下分享给大家.至于mongoDB有什么优点,大家可以到官网去看. 安装: 首先我们需要到官网下载适合自己系统的mongodb. w ...

  7. 大杂烩 -- Java中Iterator的fast-fail分析

    基础大杂烩 -- 目录 Java中的Iterator非常方便地为所有的数据源提供了一个统一的数据读取(删除)的接口,但是新手通常在使用的时候容易报如下错误ConcurrentModificationE ...

  8. HTML5的一个写下拉文本框标签

    新的HTML5有个标签,能够下拉的文本框 代码如下 <input list="browsers"> <datalist id="browsers&quo ...

  9. PHP计算两个绝对路径的相对路径

    用PHP计算两个绝对路径的相对路径,该如何求呢? 先根据分隔符切割,然后查找相同 异同点,然后开始有相同点,从相同点结束为止开始拼接剩余部分,没有的话,到达根路径拼接整体. 截图如下: 代码如下: & ...

  10. python是c语言开发的

    python是c语言开发的. #c语言,没有字符串:字符串使用字符组表现   hello —五个字符 字符数组 [’h’,’e’,…’o’]   所以python中如果对一个字符串进行修改,就是在内存 ...