一、角色控制器

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. 安装yeoman报没有权限的错误

    新的ubuntu服务器, 不小心先装了npm, 再装的node, 再用meanjs装的yeoman(即不是自己npm install -g yo装的, 是用meanjs的stack一步到位的),而正常 ...

  2. Oracle With As 查询

    WITH AS WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句 ...

  3. Android Studio配置设置

    文章来源:http://www.cnblogs.com/smyhvae/p/4390905.html

  4. MySQL 字符串拼接详解

    在Mysql 数据库中存在两种字符串连接操作.具体操作如下一. 语法:   1. CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,conca ...

  5. thinkphp路由

    一.普通模式 'url_route_on' => false, 二.混合模式 'url_route_on' => true, 'url_route_must'=> false, 三. ...

  6. mysql中如何开启binlog?开启二进制日志文件?binary log?

    需求描述: 开启mysql的binlog即binary log日志功能,在此记录下. 版本描述: mysql版本:5.7.21-log 操作过程: 1.修改my.cnf并且将以下参数加入其中,重启my ...

  7. R语言概述

    R是一个有着统计分析功能及强大作图功能的软件系统,是由Ross Ihaka和Robert Gentleman共同创立.它是属于GNU系统的一个自由.免费.源码开放的软件,同一时候也是一个用于统计计算和 ...

  8. Eclipse------新建文件时没有JSP File解决方法

    1.为没有web选项的eclipse添加web and JavaEE插件 .在Eclipse中菜单help选项中选择install new software选项 .在work with 栏中输入 Ju ...

  9. sublime自定义代码段

    打开tools>developer>new snippet 默认代码 <snippet> <content><![CDATA[ Hello, ${1:this ...

  10. python中交换两个值的方法

    a = 4b = 5 #第1种c = 0c = aa = bb = c #第2种a = a+bb = a-ba = a-b #第3种a,b = b,a 第三种办法本质上是元组之间的赋值 print(& ...