一、角色控制器

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. 【machine translate】deep learning seq2seq

    https://www.tensorflow.org/tutorials/seq2seq https://medium.com/@devnag/seq2seq-the-clown-car-of-dee ...

  2. JS判断设备类型跳转至PC端或移动端相应页面

    if((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobil ...

  3. ubuntu:如何制作类似jeso的系统?

    chroot 下载ubuntu的core包或base包 chroo后,先安装grub,再kernel,基本就ok了! 提示:mount --bind /proc  newroot/proc 可能的问题 ...

  4. Lua点号和冒号区别

    定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 a = { x = } function a.fu ...

  5. Java动态代理和静态代理区别

    静态代理 package staticproxy; /** * 接口 * @author newtouch * */ public interface IHello { public void say ...

  6. [RN] 02 - Overview: React Native Practice of 50 lectures

    观看笔记:零基础 React Native 实战开发视频 50讲 本篇效果:RN入门,整体认识 基本原理 # 1 React到RN # 2 一个简单的例子 /** * Sample React Nat ...

  7. Oracle如何实现跨库查询

    实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中. 二. 实现方法步骤: 1. 创建存储 ...

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

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

  9. MySQL用户认证及权限控制

    一.MySQL用户认证: 登录并不属于访问控制机制,而属于用户身份识别和认证: 1.用户名—user 2.密码—password 3.登录mysqld主机—host 实现用户登录MySQL,建立连接. ...

  10. java中类相关注意事项

    下面default类就是默认修饰符的类 1.Java中调用类中属性或方法(不管是否静态属性或方法)都要在类的方法中调用,虽然这个太基础,但今天想在类中调用静态类的静态变量,不能调用: 2.Java调用 ...