温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Unity3D脚印7——物理

发布时间:2020-07-28 18:57:26 来源:网络 阅读:442 作者:wyb10a10 栏目:游戏开发

Unity3D使用的是Physx物理引擎,但这里的用法跟纯粹的Physx不一样,这里是由刚体和碰撞体两种组件组成的物理对象。

 

【刚体】

 

    RigidBody 用于物理模拟,有质量,受重力影响,可以和其他可碰撞对象在碰撞的过程中发生相互作用的力,不要在运动中直接操作它们的位置(你要知道这不合物理),要通过施加力的方式来操作它,或者使用Joint

 

刚体的脚本API:http://game.ceeger.com/Script/Rigidbody/Rigidbody.html

 

Tips:

两个刚体的相对质量Mass决定它们之间碰撞之后的表现

阻力Drag越大,物体看起来越轻

 

【碰撞器】

 

    Collider 用于碰撞检测,包含物理材质,刚体的碰撞检测是基于碰撞器的,一个对象必须有碰撞器,它的刚体才有效果,而一个没有刚体的碰撞器,就是物理世界中的一个静态对象,例如地板和楼房这些不会运动的物体,但能作用于其他刚体,逐帧移动一个静态碰撞器将重置Physt引擎,极耗资源

 

碰撞器的脚本API:http://game.ceeger.com/Script/Collider/Collider.html

 

【运动学刚体】

 

    Kinematic Rigidbodies isKinematic属性为true的物体,不受力,重力,扭力的影响,但可以影响其他非运动学刚体,也可以直接设置它的位置,无敌模式,只有我可以打别人,别人不可以打我

 

【角色控制器】

 

    Character Controllers 一个垂直胶囊形状的碰撞体,用于模拟类似人的控制器,它不受力的影响,但可以被代码施加的力推动,通常,所有类似人的角色都用角色控制器来执行,角色控制器本身不具备物理特性,如果要应用真正的物理特性,必须使用刚体。

 

角色控制器API: http://game.ceeger.com/Script/CharacterController/CharacterController.html

 

 

【关于碰撞和触发的回调函数】

 

OnTriggerXXX和OnCollisionXXX回调,这系列的回调函数都是在发生碰撞的时候回调的,都包含了Enter,Exit和Stay三种状态,但触发的规则以及传入的参数不一样

 

OnTrigger系列是当碰撞体Collider和Trigger(自身的碰撞体)发生作用时调用的,当碰撞体的isTrigger属性为true时才会发送,但当它为true时,原先的碰撞属性消失。这系列回调是由Collider发出的,碰撞对象将作为Collider被传入(可以通过collider.gameObject来操作这个gameObject,它继承于Component,Component包含了非常多的组件对象

 

OnCollision系列是当刚体直接发生碰撞的时候回调的,是由刚体发出的,它传入的对象是Collision,它包含更加详细的信息,接触点,碰撞速度等等,OnCollision要求两个对象都是刚体+碰撞体,传入参数是可选的,非动力学刚体发生的碰撞仅发送碰撞事件,而不发送Collision

 

【菜鸟使用物理引擎】

 

1.创建一个游戏对象

2.添加刚体

3.添加物理材质(需导入Asset,导入方法如下所示)


Unity3D脚印7——物理 

脚本调用物理引擎

 

要使对象受物理引擎控制,简单的办法就是给它加个 Rigidbody 。当你这么干了,对象就会受到重力影响,而且会和世界中的其他对象碰撞

刚体是模拟物理效果的对象。刚体用在玩家可以四处推动的东西,比如箱子或者没有固定的对象,或者,你可以直接用脚本添加力给对象来让他四处移动。

 

如果你直接移动一个非运动学刚体的Transform,它和其他对象的碰撞可能出问题。正确地方法应该是通过施加力或者扭矩来移动刚体。也可以添加Joints 来让刚体的行为更加复杂。比如,你可以制作一扇逼真的门或者是一台有摆动链条的吊机。

 

刚体通常和原型碰撞器配合使用。

 

Tips: 提示

  • You should never have a parent and child rigidbody together 
    绝不要把父子刚体放在一起。(无法单独控制)

  • You should never scale the parent of a rigidbody 
    绝不要缩放刚体的父对象。 

 

 

 

运动学刚体指的是激活了isKinematic属性的刚体。运动学刚体不受力、重力或扭矩的影响。可以通过设置Transform 的position和rotation来准确的操作它们或者让它们动起来,但是,它们可以和其他的非运动学刚体互相作用。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI