Unity暑期学习笔记二

1.刚体

​ 刚体是要给非常重要的组件。新的创建的物体默认是没有物理效果的。比如缺少:物体的重力、摩檫力

、碰撞等等。

1.1.给物体添加刚体

Physics->Rigibody

字段描述
Mass质量 值越大下落速度越快
Drog阻力 值越大,减速越快
Angular Drag角速度 值越大 旋转减速越快
Use Gravity是否使用重力
Is Kinematic是否受重力影响
Interpolate设置图像差值
Collision Detection碰撞检测
–Discrete离散碰撞器
–Continuous连续碰撞检测
–Continuous Dynamic动态连续检测
Constraints冻结
–Freeze Position冻结方向
–Freeze Rotation冻结旋转

Discrete(离散检测):当物体这一帧还在前面,下一帧就到后面去了,就检测不到,不适用于高速运动的物体

Continuous(连续检测):防止对象穿过所有静态碰撞体

Continuous Dynamic(动态连续检测):防止对象穿过所有静态碰撞体以及设置为Continuous或Continuous Dynamic的刚体

1.2.物理参数设置

Edit->Project Setting->Physics

属性描述
Gravity重力 默认9.8N(牛) 其余方向无重力
Default Material默认物理材质
Bounce Threshold反弹值,当物体下落接触物体时速度低于反弹值则不在反弹
Sleep Velocity睡眠速度 ,低于睡眠速度时保持静止
Sleep Angular Velocity睡眠角速度
Max Angular Velocity最大角速度
Min Penetration For Penalty用于物体与物体之间碰撞后的最小穿透力
Solver Iteration Count迭代数量
Raycasts Hit Triggers释放启用命中触发器
Layer Collision Matrix图层碰撞矩阵

1.3.给刚体施加力

if (Input.GetKeyDown(KeyCode.U))
{
    // 给X方向施加1000的力
    GetComponent<Rigidbody>().AddForce(1000, 0, 0);
}

1.4.碰撞和停止运动(休眠)

函数描述
OnCollisionEnter(Collision collision)两个刚体接触瞬间调用
OnCollisionStay(Collision collision)刚体碰撞过程中每帧调用
OnCollisionExit(Collision collision)两个刚体停止接触时调用
private void OnCollisionEnter(Collision collision)
{
    Debug.Log("碰撞开始" + collision.gameObject.name);
}
private void OnCollisionStay(Collision collision)
{
    Debug.Log("碰撞持续" + collision.gameObject.name);
}

private void OnCollisionExit(Collision collision)
{
    Debug.Log("碰撞结束" + collision.gameObject.name);
        
    // 使刚体停止运动
    collision.gameObject
        .GetComponent<Rigidbody>()
        .Sleep();
}

作业

射击小游戏

2.碰撞器

如果游戏对象直接需要相互碰撞感应,则必须添加碰撞器,在添加刚体时,会自动添加碰撞器。

碰撞器模型决定了碰撞方式。会产生碰撞反馈

先后刚体后有碰撞器(双方只是有一方是刚体)

名称描述
Box Collider盒子碰撞器
Sphere Collider球形碰撞器
Capsule Collider胶囊碰撞器
Mesh Collider网格碰撞器
Wheel Collider车轮碰撞器
字段描述
Edit Collider编辑碰撞器
Is Trigger设置为触发器
Material材质
Center位置
Size大小和编辑碰撞器一致

2.1.添加碰撞器

添加组件 Collider

2.2.添加物理材质

字段描述
Dynamic Friction动摩擦系数 通常值从 0 到 1。
0值感觉像冰,1值会使它很快停止,除非大量的力或重力推动物体。
Static Friction静摩擦系数 通常值从 0 到 1。零值感觉像冰,1值会使物体很难移动
Bounciness弹力系数 0 会反弹、1反弹,不会有任何能量损失
某些近似值是预料之中的虽然这可能会为模拟增加少量的能量。
Friction Combine摩擦系数组合(两个物体摩擦系数的选择,有:平均值、最大值、最小值、差值)
Bounce Combine弹力系数组合(两个物体弹力系数的选择,有:平均值、最大值、最小值、差值)

给地面和小球全部添加 物理材质全部设置位0观察速度

2.3.触发器

双方必须有一方勾选触发器,否则是调用碰撞器

函数描述
OnTriggerEnter(Collider other)触发器碰撞开始
OnTriggerStay(Collider other)触发器碰撞持续
OnTriggerExit(Collider other)触发器碰撞结束
private void OnTriggerEnter(Collider other)
{
    Debug.Log("进入触发器");
}
private void OnTriggerStay(Collider other)
{
    Debug.Log("每帧持续触发器");
}

private void OnTriggerExit(Collider other)
{
    Debug.Log("退出触发器");
}

3.射线

射线的作用是检测该线段上是否存在物体,可以使用 人物移动(英雄联盟),射击(FPS)j、物品拾取等等。

// 创建一条射线
Ray ray= new Ray(起点位置,终点位置);


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就一枚小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值