Unity物理系统(一)物理系统相关组件

一、物理系统相关组件

Unity中的物理系统涉及的组件分为如下几类:

  • 刚体
  • 角色控制器
  • 碰撞体
  • 布料
  • 关节
  • 力场

二、刚体(Rigidbody)

Rigidbody(刚体)组件可以使游戏对象在物理系统的控制下进行运动,Rigidbody 可接受外力与扭矩力,用以保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了Rigidbody 组件之后才能受到重力的影响,通过脚本为游戏对象添加的作用力以及通过 NVIDIA物理引擎与其他的游戏对象发生互动的运算都需要游戏对象添加 Rigidbody 组件。

Rigidbody组件的属性如下:

属性 作用
Mass 质量
Drag 阻力。指物体受力运动时受到的空气阻力
Angular Drag 角阻力。指物体受力旋转时受到的阻力
Use Gravity 是否启用重力
Is Kinematic 是否开启动力学。如果开启,则游戏物体不再受物理引擎影响,只能通过Transform控制
Interpolate 插值。用来控制刚体运动时的抖动情况。包括如下选项:「None」没有插值;「Interpolate」内插值,基于前一帧的Transform平滑此次Transform;「Extrapolate」外插值,基于下一帧的Transform平滑此次Transform
Collision Detection 碰撞检测模式。包括如下选项:「Discrete」离散碰撞检测;「Continuous」连续碰撞检测;「Continuous Dynamic」连续动态碰撞检测;「Continuous Speculative」连续推断碰撞检测
Constraints 约束。「Freeze Position」冻结指定轴向的位移;「Freeze Rotation」冻结指定轴向的旋转

2.1 关于碰撞检测模式(Collision Detection)

Rigidbody组件内置了四种碰撞检测模式,官方的解释有些晦涩,这里借用一张贴吧大佬的图(原帖地址)。图中箭头指的是采用A模式的物体撞击采用B模式的物体,箭头中间的值表示两个物体碰撞时实际采用的检测模式。

比如说采用了「Continuous」模式的物体,撞击不带刚体的物体(也就是图中的Static),最终将采用「Continuous」模式进行碰撞检测。而如果两个采用「Continuous」模式的物体相撞,则会采用「Discrete」模式进行检测。

对于离散碰撞检测(Discrete),因为是以帧为单位进行检测,所以如果遇到高速移动的物体A,在上一帧还在B物体的外侧,而下一帧就已经穿过A到达另一侧,就会出现碰撞检测没有触发的情况。因此才有了两种连续碰撞检测模式。其中连续碰撞检测(Continuous)适用于可能被高速对象撞击的对象,连续动态碰撞检测(Continuous Dynamic)适用于可能发生碰撞的高速对象

需要注意:

  • 连续碰撞检测会增加额外的性能消耗,因此在没有相应需求的情况下不要使用。
  • 只有盒型碰撞体、球形碰撞体和胶囊碰撞体支持连续碰撞检测。

连续推断碰撞检测(Continuous Speculative)是一种新增的碰撞检测模式,它相对于前两种连续碰撞检测更加节省性能,但也可能会导致穿隧效应和幽灵碰撞。详情可以查看官方文档

2.2 通过刚体控制角色移动

一种是通过设置刚体的线速度和角速度实现角色移动

private void FixedUpdate()
{
   
   
	var horizontal = Input.GetAxis("Horizontal");
	var vertical = Input.GetAxis("Vertical");

	// 设置线速度
	_rigidbody.velocity = transform.forward * (vertical * moveSpeed);
	// 设置角速度
	_rigidbody.angularVelocity = transform.up * (horizontal * rotateSpeed);
}

效果如下

另一种是通过MovePosition()MoveRotation()方法控制

private void FixedUpdate()
{
   
   
	var horizontal = Input.GetAxis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值