一、角色控制器

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. mysql中explain

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

  2. Ubuntu18.10安装网易云音乐(图文并茂!)

    听音乐,怎么少得了网易云音乐,下面我们在Ubuntu18.10上来安装下: 首先进入网易云音乐的下载页:https://music.163.com/#/download,选择下载Ubuntu版本: 我 ...

  3. docker dockerfile构建自己的tomcat镜像

    文件 1.apache-tomcat-8.5.24.tar.gz, jdk-8u151-linux-x64.tar.gz Dockerfile文件: FROM centosWORKDIR /usrCO ...

  4. selenium 单浏览器模式

    如果需要无限制的任意实例化,而不是把实例化后的对象传给另一个函数.方法处理.就需要控制单浏览器,不然每次实例化弹出来一个新浏览器,很占内存 #coding=utf8 from selenium.web ...

  5. Java使用String类格式化当前日期

    在输出日期信息时,经常需要输出不同格式的日期格式,本实例中介绍了String字符串类中的日期格式化方法,实例使用不同的方式输出String类的日期格式参数值,组合这些值可以实现特殊格式的日期字符串. ...

  6. Dubbo -- 系统学习 笔记 -- 入门

    Dubbo -- 系统学习 笔记 -- 目录 入门 背景 需求 架构 用法 入门 背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行, ...

  7. ios开发之--armv7,armv7s,arm64,i386,x86_64详解

    有时候在运行的时候,经常出现诸如i386的错误,最新一些可能会出现 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch ...

  8. JSON XSS

    漏洞实例一: 1.在更新用户信息,修改联系电话,抓包绕过前端20个字符限制,Payload为 111<img src=1 onerror=alert(1)> 2.更新后,访问json 3. ...

  9. HttpClient(一)-- HelloWorld

    一.简介 HttpClient 是Apache Jakarta Common 下的子项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的 ...

  10. SVN设置没有写log不能commit

    操作方法:在SVN的Repositories下,找到要配置的项目,在项目目录下找到hooks文件夹,在其下创建pre-commit.bat文件,把下面复制进去就可以了(无需重启,如果改动,保存bat文 ...