软件开发教程 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试
游戏开发 网络协议 系统运维 HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程
C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
 
   -> 游戏开发 -> Unity暑期学习笔记二 -> 正文阅读

[游戏开发]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(起点位置,终点位置);


  游戏开发 最新文章
Fake3D && Depth Map && C
关于 Unity 启动弹 Your project was last
【洛谷】 P2670 [NOIP2015 普及组] 扫雷游戏
用Python做的打飞机小游戏
Unity Layer预设 默认设置Layer
unity 光照烘焙效果很虚的问题
“三子棋“小游戏
Unity 通过自定义菜单将资源导出
c#委托和事件和unity应用
unity 发布成Web后,打开外部链接
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:15:58  更:2021-07-17 12:17:04 
 
360图书馆 购物 三丰科技 阅读网 日历 万年历 2021年7日历 -2021/7/27 3:16:53-
图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件开发教程