• Unity3D脚印7——物理 深圳


    Unity3D使用的是Physx物理引擎,但这里的用法跟纯粹的Physx不一样,这里是由刚体和碰撞体两种组件组成的物理对象。
     
    【刚体】
     
        RigidBody 用于物理模拟,有质量,受重力影响,可以和其他可碰撞对象在碰撞的过程中发生相互作用的力,不要在运动中直接操作它们的位置(你要知道这不合物理),要通过施加力的方式来操作它,或者使用Joint
     
     
    Tips:
    两个刚体的相对质量Mass决定它们之间碰撞之后的表现
    阻力Drag越大,物体看起来越轻
     
    【碰撞器】
     
        Collider 用于碰撞检测,包含物理材质,刚体的碰撞检测是基于碰撞器的,一个对象必须有碰撞器,它的刚体才有效果,而一个没有刚体的碰撞器,就是物理世界中的一个静态对象,例如地板和楼房这些不会运动的物体,但能作用于其他刚体,逐帧移动一个静态碰撞器将重置Physt引擎,极耗资源
     
     
    【运动学刚体】
     
        Kinematic Rigidbodies isKinematic属性为true的物体,不受力,重力,扭力的影响,但可以影响其他非运动学刚体,也可以直接设置它的位置,无敌模式,只有我可以打别人,别人不可以打我
     
    【角色控制器】
     
        Character Controllers 一个垂直胶囊形状的碰撞体,用于模拟类似人的控制器,它不受力的影响,但可以被代码施加的力推动,通常,所有类似人的角色都用角色控制器来执行,角色控制器本身不具备物理特性,如果要应用真正的物理特性,必须使用刚体。
     
     
     
    【关于碰撞和触发的回调函数】
     
    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,导入方法如下所示)

     
    脚本调用物理引擎
     
    要使对象受物理引擎控制,简单的办法就是给它加个 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来准确的操作它们或者让它们动起来,但是,它们可以和其他的非运动学刚体互相作用。

  • 相关阅读:
    企业版证书打包APP发布,安装后闪退问题解决。
    Swift 与 Object-C 交互 (Swift版本为:1.2)
    iOS开发-代码片段(Code Snippets)提高开发效率
    iOS开发-Object-C可变参数函数
    MAC-Zsh安装与使用——终极Shell
    Git-学习笔记(常用命令集合)
    CSS动画,2D和3D模块
    CSS定位与布局
    CSS基础
    CSS概述
  • 原文地址:https://www.cnblogs.com/ybgame/p/2920016.html
Copyright © 2020-2023  润新知