U3D中给刚体力的位置移动问题加力的问题

2、Update() 正常更新逻辑,每渲染一帧都会調用

4、LateUpdate()   会在每一帧中被调用在所有Update函数被调用之后才执行。有利于程序的有序执行(例如:跟随摄像机就应该在LateUpdate执行,因为它跟随的對象也许需要在Update中执行

9、OnTriggerEnter(Collider other)  当Collider(碰撞体)进入trigger(触发器)时调用这个消息被发送到触发器碰撞体和刚体力的位置移动问题(或者碰撞体假设没有刚体仂的位置移动问题)。注意如果碰撞体附加了一个刚体力的位置移动问题也只发送触发器事件

11、让一个物体朝向另一个物体

12、创建一个对潒,并让它有一个运动轨迹

关于物体的移动方式用实例的方式写下来更直观点,也方便自己以后复习
下面列举几种方式,效果都不一样

,类似贪吃蛇的移动方式不能在一条线上直接后退,始终朝着Z轴(forward)方向移动不论你按的是哪个方向它都会先把Z轴转向你所按的那个方向然后在移动

,物体的移动通过键盘获取旋转则通過鼠标的位置获取。物体的Z轴会一直朝着鼠标指针的位置类似“生存射击”案例中控制角色移动的方式

当然,还有好几种方法以后再慢慢补充吧。

刚体力的位置移动问题使物体能茬物理控制下运动刚体力的位置移动问题可通过接受力与扭矩,使物体像现实方式一样运动任何物体想要受重力影响,受脚本施加的仂的作用或通过NVIDIA PhysX物理引擎来与其他物体交互,都必须包含一个刚体力的位置移动问题组件

  • 若激活,该物体不再受物理引擎驱动而只能通过变换来操作。适用于模拟运动的平台或者模拟受铰链关节连接的刚体力的位置移动问题

  • 不连续碰撞检测。使用不连续碰撞检测模式来与场景中其他碰撞器进行碰撞检测其他物体与它的碰撞检测,也会应用这种模式适用于普通碰撞(这是默认的模式)。

刚体力的位置移动问题让物体在物理引擎控制下运动它可以通过真实碰撞来开门,实现各种类型的关节及其他很酷的行为通过力来操纵物体,與直接通过变换不同有一种不同的感觉。通常情况下对同一物体,要么通过刚体力的位置移动问题操纵要么通过变换操纵。

通过变換与通过刚体力的位置移动问题操纵最大的不同在于使用了力刚体力的位置移动问题相比于变换,能够接受力与扭力变换能够控制平迻和旋转,但与物理方式的实现不同你可以通过实践来明显地区分它们的不同。给刚体力的位置移动问题施加力和力矩实际也会改变物體变换组件的位置与旋转角度这就是为什么在变换和刚体力的位置移动问题间,最好只选择一种操纵方式的原因同时使用两种方式会導致旋转及其他计算出现问题。

刚体力的位置移动问题在受物理引擎影响之前必须明确添加给物体。你可以通过选中物体然后在菜单Components->Physics->Rigidbody來增加一个刚体力的位置移动问题组件。现在你的物体的物理属性就设置好了,但你也可以根据需要来为其增加碰撞器或关节

当一个粅体处于物理控制中,他会以半独立的方式随着变换的父亲的移动而移动如果你移动父物体,那么它会将子刚体力的位置移动问题拖向咜但是,这个刚体力的位置移动问题仍然会根据重力下落或进行碰撞反应

可以通过脚本增加力或力矩来控制你的刚体力的位置移动问題。通过调用刚体力的位置移动问题中的AddForce()和AddTorque方法 记住,不要同时使用物理与变换

有些情况下,比如想实现布娃娃效果需要刚体力的位置移动问题在动画与物理的操纵方式间切换。这种情况下刚体力的位置移动问题可以标记为运动学模式。当刚体力的位置移动问题标記为运动学模式他不会受到碰撞,力及任何物理影响它表示你必须直接通过变换的方式来操纵该物体。运动学模式的刚体力的位置移動问题会与其他物体进行物理交互但自身不受物理影响。例如通过关节约束那些和运动学刚体力的位置移动问题连接起来的刚体力的位置移动问题,运动学刚体力的位置移动问题影响那些与之发生碰撞的刚体力的位置移动问题

碰撞器是另一种组件,它和刚体力的位置迻动问题一起来使碰撞发生。如果两个刚体力的位置移动问题撞在一起物理引擎将不会计算碰撞除非它们包含一个碰撞器组件。没有碰撞器的刚体力的位置移动问题会在物理模拟中相互穿透。

通过菜单Component->Physics menu来添加一个碰撞器想知道更多信息,请看参考手册中碰撞器方面嘚介绍

组合碰撞器是基本碰撞器的组合,共同扮演一个碰撞器的角色当你有一个复杂网格却不适用网格碰撞器的情况下,使用组合碰撞器是个好的选择要创建组合碰撞器,先为你的碰撞物体创建子对象然后对每个子对象创建一个基本碰撞器。这样就允许你轻易的独竝移动、旋转和放缩每个碰撞器

上图中,环境里包含一个网格碰撞器网格碰撞器的最佳适用地方是不规则形状的地形或环境。如图***模型物体包含一个刚体力的位置移动问题组件,以及数个基本碰撞器的子物体当刚体力的位置移动问题这个父对象受力移动时,它的孓碰撞器也跟着移动基本碰撞器与环境的网格碰撞器发生碰撞时,父对象的刚体力的位置移动问题也会因其子碰撞器与环境中其他碰撞器发生碰撞产生的力而改变运动轨迹

网格碰撞器之间通常不相互碰撞,但如果一个网格碰撞器被标记为凸体那么它就可以与其他网格碰撞器碰撞。典型的解决方案是对移动的对象使用基本碰撞器,而对静态环境对象使用网格碰撞器

连续碰撞检测的主要作用是避免高速物体的穿透。在不连续碰撞检测模式下一个高速物体的上一帧位置在一个碰撞器的一边,而下一帧位置就穿透该碰撞器时就发生了穿透。为了解决这个问题你要为高速物体设置连续碰撞检测模式。设置连续碰撞检测模式将避免刚体力的位置移动问题穿透静态网格碰撞器(该网格未必是刚体力的位置移动问题)而设置为连续动态碰撞检测将避免刚体力的位置移动问题穿透设为连续动态碰撞检测与动態碰撞检测的刚体力的位置移动问题。盒碰撞器、球碰撞器技胶囊碰撞器支持动态碰撞检测主要,连续碰撞检测只是提供了一种穿透的保护它保证捕获碰撞事件,但并不保证碰撞反应的精确性所以,当你发现高速物体有这方面问题时得考虑降低TimeManager中的固定时间间隔来讓模拟更加的精确。

你的物体网格的大小要比刚体力的位置移动问题的质量更加重要如果你发现你的刚体力的位置移动问题不像你所期朢的那样运动——慢、飘、碰撞不正确——那么请考虑调整你的网格资源的大小。Unity的默认长度单位是1单位=1米你导入模型的大小会被保持,并参与物理运算中例如,一个摩天大楼倒塌的表现肯定要异于一个玩具积木搭起来的塔所以,对不同大小物体要用精确的比例建模。

如果对一个人体建模那么保证它大概在Unity中2米高。可以和一个默认的盒子对比来判断大小使用 GameObject->Create Other->Cube来创建盒子。盒子的高为1米所以你嘚人高度应该是它的两倍。

如果你不能自己调整网格那你可以修改一个指定网格资源的比例,通过在项目视图中选中它然后在目录里選择Assets->Import Settings,在这里你可以选择比例,然后重新加载你的网格

如果物体在游戏中需要实例化成不同的比例,可以调整变换组件的比例轴这種做法的缺点是在物体实例化时,物理模拟将执行更多操作会导致游戏性能下降。 这不是很可怕的下降但确实没有采用其他两种方法那样有效率。此外父对象使用一个非标准比例的物体也会产生不好的行为。所以建议是创建物体时尽量调整好标准比例。

参考资料

 

随机推荐