新印象unity第五章笔记--物理系统

本文详细介绍了Unity3D中的Rigidbody组件,包括质量、阻力和碰撞检测等属性,以及BoxCollider、SphereCollider等不同类型的碰撞器。此外,还讨论了物理关节如HingeJoint和SpringJoint的参数和用法,以及射线检测和触发事件的监听方法。文章还提到了物理材质和碰撞检测的要求及处理方法。
摘要由CSDN通过智能技术生成

1、刚体

与同样可以控制物体的Transform组件相比:

  • Transform重点在于物体的位置和旋转上
  • RigidBody重点放在物体的力、速度和扭矩上

RigidBody组件: 

Mass:质量(kg)

Drag:阻力;用于表示物体移动时会受到的空气阻力,0为不受阻力影响

AngularDrag:角阻力;用于表示当物体根据扭矩旋转时受到的空气阻力大小

UseGravity:是否使用重力

IsKinematic:运动学;刚体不会受到物理特性的影响,但是仍然可以触发物理检测等功能

Interpolate:插值;

  • none 无
  • interpolate 根据上一帧的变化进行插值
  • extrapolate 根据下一帧的变化进行插值

CollisionDetection:碰撞检测;

  • discrete 离散的
  • continuous 持续
  • continuousDynamic 连续动态
  • ContinuousSpeculative;连续检测

constraints :冻结;冻结刚体在某个轴向的移动或旋转

 RigidBody类常用属性方法:

属性方法详解
position刚体的位置
rotation刚体的旋转
velocity刚体的速度
AddForce向刚体添加一个力
AddExplosionForce向模拟爆炸的刚体添加一个力
AddTorque向刚体添加一个扭矩
MovePosition移动刚体
MoveRotation旋转刚体
IsSleeping是否在休眠状态
Sleep让刚体进入至少一帧的休眠
WakeUp唤醒刚体

2、碰撞器

1.BoxCollider 方体碰撞器

参数:

 EditCollider:编辑碰撞器;

IsTrigger:是触发器;触发事件并忽略碰撞

2.球体碰撞器

3.胶囊碰撞器

4.地形碰撞器

5.网格碰撞器

参数:

Convex:凸面;触发器是否为凸面

CookingOptions:烹饪选项;

细节:

WheelCollider(车轮碰撞器):

  • 最大转弯角度:steerAngle;
  • 最大动力:motorTorque;

3、物理关节

1.Hinge Joint铰链关节

作用:组合两个刚体

参数:

EditAngularLimits(编辑关节角度限制):

ConnectedBody(连接刚体):

ConnectedArticulation(连接关节):

Anchor(锚点):轴的锚点位置

Axis(轴):关节轴的方向

UseSpring(使用弹簧):

Spring(弹簧力):弹力

Damper(阻尼):阻尼力

TargetPosition(目标角度):弹簧会朝着该角度变化

UseMotor(使用动力):使用电机动力运动

Target Velocity(目标速度):

Force(力):

FreeSpin(自由旋转):勾选则电机不会停止

Limits(限制):角度限制

BreakForce(断开力):

BreakTorque(断开力矩):

2.Spring Joint弹簧关节

3.Fixed Joint固定关节

施加力可使两者分离

4、物理材质

体现不同的物理特性;

放在MeshCollider组件中的“材质”选项;

参数:

DynamicFriction(动摩擦力):数值范围为0-1;

StaticFriction(静摩檫力):静摩檫力,数值范围为0-1;

Bounciness(弹力):数值范围为0-1。0代表无弹力,1代表弹力最大;

FrictionCombine(摩檫力组合):摩檫力的组合模式;

Average(平均值):使用两个摩檫力的平均值;

Minimum(乘积):使用两个摩檫力的乘积;

Maximum(最大值):使用两个摩檫力中的最大值;

BounceCombine(弹力组合):与“摩檫力组合”类似;

5、碰撞检测

要求:

  • 两物体有碰撞器组件
  • 至少有一个游戏物体具有刚体组件(一般是游戏角色添加)

碰撞监听方法:

  • OnCollisionEnter
  • OnCollisionStay
  • OnCollisionExit

6、触发检测

触发监听方法:

  • OnTriggerEnter
  • OnTriggerStay
  • OnTriggerExit

7、射线

1.射线碰撞检测

射线的创建:

//the one
Ray ray1=Camera.main.ScreenPointToRay(Input.mousePosition);

//the two
Ray ray2=new Ray(Vector3.zero,Vector3.up);

 射线碰撞信息类:


RaycastHit hit;

//是否碰撞
bool res=Physics.Raycast(ray,out hit);

//碰撞坐标
hit.point;

2.射线多碰撞检测

创建方式还是一样

RaycastHit[] hits;

//是否碰撞
hits=Physics.RaycastAll(ray);
  1. Physics.RaycastAll(ray,distance,layer);layer:数量<<层数,1<<10 = 仅发射其中一层,这一层指定为第十层
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值