Unity3D_(物理引擎)Rigidbody组件
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组件的更多相关文章
- [原]Unity3D深入浅出 - 物理引擎之刚体部件(Rigidbody)
在虚拟世界中,任何物体都是没有活力的,要想变的真实,Rigidbody是必不可少的组件,下面介绍Rigidbody的各个属性: Mass:质量 Drag:阻力,对象在运动时遇到的空气阻力,0表示没有空 ...
- unity2D物理引擎之-Rigidbody 2D
虽然Rigidbody 2D大致上可以看成是Rigidbody的2D化,大部分功能也是一致的,但是还是有一些细节问题. 一些事项: 1.任何添加到同一个 GameObject身上或者其子物体身上的 2 ...
- Unity3D游戏开发初探—3.初步了解U3D物理引擎
一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...
- Unity3D实践系列09, 物理引擎与碰撞检测
在Unity3D中,一个物体通常包含一个Collider和一个Rigidbody.Collider是碰撞体,一个物体是Collider,才可以进行碰撞检测.Collider组件中的"Is T ...
- 【英宝通Unity4.0公开课学习 】(四)GUI到物理引擎
今天老妈打电话来说和老爸吵架了... 真的是家家都有本难念的经啊.前后帮她分析了个半小时才帮她解开心结...现在想想老爸还是蛮可怜的,连分享的人都木有 讲的GUI都看睡着了...因为想着可以用NGUI ...
- RigidBody组件的Is Kinematic
RigidBody组件的Is Kinematic属性打上勾(设为true,使其不受物理引擎驱动,Wall是为了防止其移动,Person是为了防止其受到力不断旋转—看的心塞=v=) .is kinema ...
- 关于Unity中物理引擎的使用
物理引擎控制刚体,刚体上面贴上图片,所以看起来就是游戏运行起来的状态 物理世界计算刚体的运行状态,通过贴图显现出运算结果. 一.物理引擎 1:Unity 2D物理引擎基于Box2D封装而成;2: 物理 ...
- Unity3D笔记三 物理引擎
一.物理引擎 1.物理引擎就是模拟真实世界中物体碰撞.跌落等反应,通过Ballance.愤怒的小鸟来理解什么是物理引擎.Unity的物理引擎使用的是NviDIA的PhysX.2.选中一个游戏对象,主菜 ...
- 003-unity3d 物理引擎简介以及示例
一.概述 物理引擎就是模拟真实世界中物体碰撞.跌落等反应的引擎,通过ballence.愤怒的小鸟等理解.Unity3D的物理引擎使用的是Nvidia的PhysX. 物理引擎是一个计算机程序模拟牛顿力学 ...
随机推荐
- 02:linux常用命令
1.1 linux查看系统基本参数常用命令 1.查看磁盘 [root@linux-node1 ~]# df -hl Filesystem Size Used Avail Use% Mounted on ...
- 测试必知150个常用Linux命令,已为各位筛选整理
●线上查询及帮助命令(1 个) help 如:mkdir --help ●文件和目录操作命令(12 个) ls tree pwd mkdir rmdir cd touch cp mv r ...
- Python 入门 之 双下方法
Python 入门 之 双下方法 1.双下方法 定义:双下方法是特殊方法,它是解释器提供的 由双下划线加方法名加双下划线 方法名的具有特殊意义的方法,双下方法主要是python源码程序员使用的,我 ...
- JavaEE--JavaWeb三大组件Servlet、Filter、Listener
Servlet.Filter.Listener是JavaEE Web服务规定的服务器动态组件,由开发者编写由Web容器创建,并保证单例以及线程安全性,其中加载顺序为Linstener -> Fl ...
- WPF文本输入框关闭Win10输入法设置
今天一个同事突然站起来给了我一个眼神,我就知道没啥好事.果然给我指出了一些bug,其中一个是这样的,密码输入框只能输入一个字符,再输入就输入不了. 这种降档次的错误咱也能出,果断夺过键盘,疯狂输入一番 ...
- 客户端相关知识学习(一)之混合开发,为什么要在App中使用H5页面以及应用场景、注意事项
混合开发 随着移动互联网的高速发展,常规的开发速度已经渐渐不能满足市场需求.原生H5混合开发应运而生,目前,市场上许多主流应用都有用到混合开发,例如支付宝.美团等.下面,结合我本人的开发经验,简单谈一 ...
- Centos7:tomcat8.5安装,配置及使用
1.解压缩 2.启动 ./startup.sh//启动 ./shutdown.sh//关闭 tail -f ../logs/catalina.out//查看日志
- 记一些云服务器上部署koa2项目遇到的问题
云服务器系统版本centos7.2,部署的项目koa2,node版本: 10.16.0 一.pm2的一些问题 1.安装pm2: npm install -g pm2 2.建立软链接,使pm2能全局使用 ...
- 详解EveryThing
摘要:Everything几乎是每个职场人必备的效率工具,但同事们都只用它的一两个基本功能,并没有发挥出该软件的真正效率.实际上,把Everything的功能用到极致能够成倍的提升我们的工作效率,本文 ...
- centos7搭建activemq服务
一.下载安装jdk 下载 jdk-8u211-linux-x64.rpm安装: yum -y install jdk-8u211-linux-x64.rpm 二.官网下载 activemq 软件包 官 ...