Rigidbody组件刚体(Rigidbody)是Unity物理引擎中的重要组件,一个游戏对象添加了刚体组件以后就开始接受物理力学的影响了,比如重力、空气摩擦力、碰撞产生的推力

 

Learn

  相同高度不同重量物体下落时间

   相同重量不同空气阻力对物体的影响

  碰撞相关的三个事件

  触发器相关的三个事件

  

  创建一个场景Gary,新建四个Cube,一个作为地面,另外三个作为测试方块

  给Cube添加材质球(材质Material)  

  三个测试方块后改名  A、B、C

  给Cube添加Rigidbody组件

  

  Mass:质量

  Drag:空气阻力

  Angular Drag:角阻力

  Use Gravity:使用重力

  Is Kinematic:是否使用动力学

  Interpolate:插值

  Collision Detection:碰撞检测

  Constraints:约束

相同高度不同重量物体下落时间

  修改A、B、C物体Mass的值

  A:Mass修改为10

  B:Mass修改为50

  C:Mass修改为100

  结论:不同质量的物体从同一高度自由落体至地面,到达地面的时间相同,最后的速度相同,但动能不相同,

相同重量不同空气阻力对物体的影响

  保持A、B、C物体Mass的值相同(10),修改其Drag(空气阻力)的值

  A:Drag修改为1

  B:Drag修改为10

  C:Drag修改为50

  结论:相同重量物体,空气阻力越小物体下落快,当物体重量和空气阻力相同时物体会保持下落,当物体重量小于空气阻力时,物体保持不动

  (当我把B物体空气阻力改为45时B物体还会保持下落,改为48时,B物体只会下滑0.0033高度,C物体空气阻力为50时在空中y轴值保持不变)

  

给A物体添加一个RigidTest.cs脚本

  AddForce()施加力

  AddTorque()施加力矩

  AddForceAtPosition()在指定位置施加力

  //AddExplosionForce()施加爆炸力

(测试时建议将A物体重力设置低一些,按1给物体施加力,按2给物体施加力矩,按3在指定位置给物体施加力)

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class RightText : MonoBehaviour { private Rigidbody r;
// Use this for initialization
void Start()
{
r = GetComponent<Rigidbody>();
} // Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.Alpha1))
{
//施加力
r.AddForce(new Vector3(0f, 10f, 0f));
}
if (Input.GetKey(KeyCode.Alpha2))
{
//施加力矩
r.AddTorque(new Vector3(0f, 10f, 0f));
}
if (Input.GetKey(KeyCode.Alpha3))
{
//在指定位置施加力
r.AddForceAtPosition(new Vector3(0f, 10f, 0f), new Vector3(0.5f, 0.5f, 0.5f));
}
}
}

RightText.cs

Collider的主要功能是进行碰撞检测 使用刚体时,一般都会和Collider共同使用

碰撞事件

  发生碰撞的两个物体必须都带有Collider

  发生碰撞的两个物体至少有一个带有刚体

  发生碰撞的两个物体必须有相对运动

碰撞相关的三个事件

   碰撞开始时调用一次void OnCollisionEnter(Collision other)

   碰撞持续发生时调用void OnCollisionStay(Collision other)

   碰撞结束时调用void OnCollisionExit(Collision other)

(A物体与地面进行了碰撞检测)

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class ColliderText : MonoBehaviour { void OnCollisionEnter(Collision other)
{
print("碰撞开始!!!");
} void OnCollisionStay(Collision other)
{
print("碰撞中!!!");
} void OnCollisionExit(Collision other)
{
print("开始结束!!!");
}
}

ColliderText.cs

触发器相关的三个事件 

  刚刚进入触发范围时调用一次void OnTriggerEnter(Collider other)

  持续在触发范围内会一直调用void OnTriggerStay(Collider other)

   离开触发范围时会调用一次void OnTriggerExit(Collider other)

  勾选A物体Box Collider下的Is Trigger属性(无视碰撞触发函数)

  

(因为A物体不会和地面进行碰撞,所以就直接穿过去了)

using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class ColliderText : MonoBehaviour { //刚刚进入触发范围时调用一次_
void OnTriggerEnter(Collider other)
{
print("触发开始!!!");
} //持续在触发范围内会一直调用_
void OnTriggerStay(Collider other)
{
print("触发器检测中!!!");
} //离开触发范围时会调用一次
void OnTriggerExit(Collider other)
{
print("触发结束!!!");
}
}

ColliderText.cs

物理材质

  物理材质能够给物体添加摩擦力和弹力

  物理材质只能添加到带有Collider的对象上

  

Unity3D_(物理引擎)Rigidbody组件的更多相关文章

  1. [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)

    在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...

  2. unity2D物理引擎之-Rigidbody 2D

    虽然Rigidbody 2D大致上可以看成是Rigidbody的2D化,大部分功能也是一致的,但是还是有一些细节问题. 一些事项: 1.任何添加到同一个 GameObject身上或者其子物体身上的 2 ...

  3. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  4. Unity3D实践系列09, 物理引擎与碰撞检测

    在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...

  5. 【英宝通Unity4.0公开课学习 】(四)GUI到物理引擎

    今天老妈打电话来说和老爸吵架了... 真的是家家都有本难念的经啊.前后帮她分析了个半小时才帮她解开心结...现在想想老爸还是蛮可怜的,连分享的人都木有 讲的GUI都看睡着了...因为想着可以用NGUI ...

  6. RigidBody组件的Is Kinematic

    RigidBody组件的Is Kinematic属性打上勾(设为true,使其不受物理引擎驱动,Wall是为了防止其移动,Person是为了防止其受到力不断旋转—看的心塞=v=) .is kinema ...

  7. 关于Unity中物理引擎的使用

    物理引擎控制刚体,刚体上面贴上图片,所以看起来就是游戏运行起来的状态 物理世界计算刚体的运行状态,通过贴图显现出运算结果. 一.物理引擎 1:Unity 2D物理引擎基于Box2D封装而成;2: 物理 ...

  8. Unity3D笔记三 物理引擎

    一.物理引擎 1.物理引擎就是模拟真实世界中物体碰撞.跌落等反应,通过Ballance.愤怒的小鸟来理解什么是物理引擎.Unity的物理引擎使用的是NviDIA的PhysX.2.选中一个游戏对象,主菜 ...

  9. 003-unity3d 物理引擎简介以及示例

    一.概述 物理引擎就是模拟真实世界中物体碰撞.跌落等反应的引擎,通过ballence.愤怒的小鸟等理解.Unity3D的物理引擎使用的是Nvidia的PhysX. 物理引擎是一个计算机程序模拟牛顿力学 ...

随机推荐

  1. python __dict__ 跟 dir()的区别

    __dict__:要是对象的话返回的是一个对象自身的实例属性.不包括类的属性:要是类的__dict__则不包括父类的属性,只包含自身类属性[方法.类变量],不包括实例属性.正是这样.每个实例的实例属性 ...

  2. Ruby Rails正式学习:Ruby on Rails 做个演示项目吧,逐渐完善

    项目开始 一. 新建Rails项目 1. 修改一下Gemfile文件(简单修改一下) source 'https://rubygems.org' git_source(:github) { |repo ...

  3. CentOS7搭建FastDFS V5.11分布式文件系统(二)

    1.CentOS7 FastDFS搭建 前面已下载好了要用到的工具集,下面就可以开始安装了: 如果安装过程中出现问题,可以下载我提供的,当前测试可以通过的工具包: 点这里点这里 1.1 安装libfa ...

  4. jq无限极树结构

    //群组树结构$(function () { var params= { "companyId":cmpId }; var loadUrl="/apiv2/classif ...

  5. lftp连接异常情况分析过程

    [问题现象]:通过rpm安装好lftp后,执行lftp huangmr:huangmr@192.168.107.132无法连接(lftp huangmr@192.168.107.132:~> l ...

  6. 11、find查找

    1.find查找概述 为什么要有文件查找,因为很多时候我们可能会忘了某个文件所在的位置,此时就需要通过find来查找. find命令可以根据不同的条件来进行查找文件,例如:文件名称.文件大小.文件修改 ...

  7. PIL:处理图像的好模块

    介绍 PIL是一个专门用来处理图像的模块,可以对图象进行各种各样的变换 打开一张图片 from PIL import Image # 调用Image下的open方法,即可打开一张图片 # 得到的im便 ...

  8. 测试人员必备:linux文件清理不得不知道的技巧

    测试人员最常见和繁琐的任务之一就是清理系统,比如防止磁盘空间出现不足.下面是我收集的一些常用的 Linux 文件系统相关命令. 一 检查可用空间 要查找服务器上所有文件系统上的可用空间,请执行以下命令 ...

  9. html 不刷新切换当前页面内容

    一个小功能,做个笔记: 操作流程是:导航产品有三个下拉子菜单,点击食品跳转,同时跳转出来的子页面中,选中食品这个当前项. 切换  食品  厨具   家电  三个选项卡在刷新页面的时候仍然停留在当前选中 ...

  10. 第一次把本地项目与git相连

    原文:https://blog.csdn.net/a987625922/article/details/82189863 新建远程仓库(github或者gitee) 将本地仓库转换成版本库,并将文件添 ...