一、传送带物理效果
1. 更改重力设置
- 重力调整入口:通过项目设置进入物理引擎,即可修改重力参数。
- 重力与对象尺寸的关系:重力数值需要与场景中对象的尺寸相匹配,否则模拟效果会失真。
- 重力值过小会导致下落呈现"慢动作"效果。
- 重力值过大则会使物体下落过快,看起来不真实。
- 调试过程:依次尝试了9、90、20、40等数值,最终将重力设置为60,下落效果最接近真实物理表现。
- 碰撞检测模式:默认的离散碰撞检测在物体高速运动时可能发生穿透现象,开启连续碰撞检测可以避免该问题。
2. 创建圆柱体对象
- 选择圆柱体的原因:立方体形状规则,容易保持平衡,无法充分测试物理引擎的模拟效果;圆柱体曲面结构更难保持平衡,更适合验证物理表现。
- 碰撞器选择:创建圆柱体后,默认的胶囊碰撞器不适用,需直接删除
- 添加网格碰撞器:为圆柱体添加网格碰撞器,并将其尺寸调整为比圆柱体本身稍大一些。
- 开启凸形选项:在网格碰撞器中开启凸形(Convex)选项,否则物理模拟无法正常工作。
- 调整位置:切换到顶视图和前视图,将圆柱体居中放置。
- 添加刚体组件:为圆柱体添加刚体组件,使其受重力影响。
- 重力设置注意事项:在播放状态下修改重力数值不会被保存,需退出播放模式后重新设置。
- 测试结果:将传送带速度调至8后,圆柱体的下落和滚动效果比慢动作更真实,且能稳定站立。
- 摩擦力观察:让圆柱体撞击障碍物后,发现场景中实际上没有摩擦力作用,无需额外修改其他参数。
3. 传送带方向检测脚本
1)返回旋转信息
- 问题背景: 传送带脚本和物理脚本已被编程为在特定方向运行,若需改变传送方向,需要修改脚本。
- 旋转读取思路: 传送带只能以垂直方式设置,y轴旋转值可能为0、90、180、270,然后回到0。通过读取旋转信息,相应地设置运动方向。
- 读取旋转的方法: 在脚本开始时,通过 transform.rotation 获取物体的旋转信息。
- 四元数(Quaternion): 是Unity中表示3D旋转的数学表示形式。
- 欧拉角(EulerAngles): 通过 rotation.eulerAngles 获取包含X、Y、Z旋转角度的 Vector3 值,可单独访问各轴分量。
- 代码实现: 定义一个四元数变量 rot,将其赋值为 transform.rotation。
- 获取y轴旋转: 定义 float currentRot,通过 rot.eulerAngles.y 获取y轴旋转值。
- 输出调试: 使用 Debug.Log(currentRot) 输出当前旋转值,验证是否成功获取旋转信息。
- 代码位置调整: 将旋转读取和输出代码放在 Update() 方法中,而不是 Start() 方法中,以便持续检测旋转变化。
- 验证结果: 运行模拟后,控制台输出旋转值为0,说明成功获取了旋转信息。
2)测试方向检测
- 方向变量定义: 定义 private int orientation,用于存储方向状态(0、1、2、3)。
- 方向判断逻辑: 通过判断 currentRot 的值来确定方向:
- 如果 currentRot 为0,则 orientation = 0
- 如果 currentRot 为90,则 orientation = 1
- 如果 currentRot 为180,则 orientation = 2
- 如果 currentRot 为270,则 orientation = 3
- 取余判断的误区: 使用 currentRot % 90 == 0 判断会导致错误,因为180除以90的余数也是0,无法区分不同角度。
- 测试过程: 依次将传送带旋转到0、90、180、270度,验证方向检测是否正确。
- 测试结果: 0度对应方向0,90度对应方向1,180度对应方向2,270度对应方向3,检测逻辑正确。
- 方向与运动关联: 将方向值与实际运动方向对应:
- orientation = 0(0度):向右移动(Vector3.right)
- orientation = 1(90度):向后移动(Vector3.back)
- orientation = 2(180度):向左移动(Vector3.left)
- orientation = 3(270度):向前移动(Vector3.forward)
- 代码实现: 在 FixedUpdate() 中根据 orientation 的值,使用 conv.MovePosition(pos) 设置不同的移动方向。
- 验证各方向: 分别测试0度、90度、180度、270度下的运动方向,确认所有方向均正确。
- 最终效果: 传送带可以设置为任意方向,并自动进入正确的流动方向。
4. 传递产品
1)复制并调整传送带位置与角度
- 复制传送带:选中已有一条传送带,复制并粘贴到目标位置,得到第二条传送带。
- 调整角度:将新传送带旋转至0度,使其与第一条传送带平行。
- 对齐操作:切换到顶视图,尽量对齐两条传送带的位置。
2)设置传送带高度差与平台
- 高度差问题:两条传送带之间没有高度差,需要让其中一条比另一条高。
- 解决方案:暂时让传送带悬浮,后续通过一个类似箱子的平台将其中一条传送带抬到另一条之上。
- 位置调整:将两条传送带移动到合适位置,调整X轴坐标,使第一条传送带略高。
3)调整传送带间距与删除多余对象
- 间距调整:将两条传送带靠近,确保物体到达第一条传送带末端时能被第二条传送带接住,不会掉落到框架上的障碍物。
- 删除多余对象:删除为第二条传送带设置的传送带对象,只保留需要的物体。
4)测试传送带运输效果
- 快速测试:运行场景,观察物体能否顺利从第一条传送带传递到第二条传送带。
- 观察结果:物体到达传送带末端后掉落,被第二条传送带接住并带走。
5)设置传送带速度并启动
- 速度设置:进入传送带控制系统,将第一条传送带速度设置为5,按下开始按钮。
- 逐个激活:需要逐个激活传送带,在控制界面将第二条传送带速度也设置为5,然后启动。
- 运行方向:传送带启动后,物体朝指定方向移动。6)添加并旋转第三个传送带
- 复制第三个传送带:复制第二条传送带,粘贴得到第三条传送带。
- 旋转90度:将第三条传送带旋转90度,切换到顶视图调整位置。
- 空间利用:调整布局,避免浪费空间。
7)调整传送带布局并检查碰撞
- 提升传送带:选中两条传送带,沿Y轴(igas轴)一起向上提升。
- 碰撞检查:回到之前的状态,检查所有传送带是否正常,有无碰撞问题。
- 微调处理:对第三条传送带进行位置和角度的微调,确保布局合理。
8)三个传送带协同运输测试
- 协同运行:三个传送带依次传递物体,形成完整的运输链路。
- 速度统一:将所有传送带速度设置为5,逐个启动。
- 运行效果:物体依次经过三个传送带,顺利传递到终点,无掉落或卡顿现象。
5. 倾斜传送带物理效果
1)倾斜传送带的创建与初始设置
- 创建倾斜传送带:在现有三条传送带的基础上,尝试创建第四条倾斜传送带。
- 旋转角度设置:将传送带的旋转角度设置为 180°,而非默认的 0°。
- 旋转角度决定了传送带的朝向,180° 表示与默认方向相反。
2)传送带倾斜角度与位置调整
- 调整思路:通过修改传送带的 X 轴、Y 轴和 Z 轴 的位置与旋转参数,使其形成倾斜角度。
- 调整过程:
- 先尝试调整 Z 轴 位置,使传送带略微抬高。
- 再调整 X 轴 位置,使传送带对准目标高度。
- 反复微调位置参数,观察传送带在场景中的实际效果。
- 调整限制:传送带不能抬得过高,否则物体会因落差过大而无法顺利过渡。
- 最终方案:将所有传送带作为一个整体同时抬起,并在传送带之间增加倾斜度,使物体能够平滑过渡。
- 倾斜度调整:在传送带之间增加倾斜角度,使物体能够从低处传送到高处。
- 整体调整:将所有传送带一起抬起,保持相对位置不变,确保物体能够顺利通过。
3)传送带速度参数配置
- 速度配置:为每条传送带设置不同的运行速度,以控制物体的传送节奏。
- 最后一条传送带:速度设为 6,使其运行较快。
- 中间传送带:速度设为 3,避免物体被弹射得太远。
- 其他传送带:保持默认速度 5。
- 启动按钮:设置启动按钮,用于控制传送带的启动与停止。
- 部分传送带设置为"无启动",即不自动启动,需要手动触发。
4)倾斜传送带物理效果测试与问题分析
- 测试过程:启动传送带,观察物体在倾斜传送带上的运动情况。
- 测试结果:物体并没有爬上倾斜的传送带,而是直接掉落。
- 问题分析:
- 角度设置不正确:传送带的倾斜角度设置不合理,导致物体无法克服重力爬上斜坡。
- 运动方向错误:物体在传送带上向右移动,但传送带的倾斜方向与运动方向不匹配,导致物体无法沿斜坡上升。
- 根本原因:传送带的倾斜角度与物体的运动方向不一致,导致物体无法沿斜坡上升。
- 解决方案:回到设计界面,重新调整传送带的倾斜角度和位置,使其与物体的运动方向匹配。
二、知识小结
|---------|----------------------------------|------------------------------------|-------------------------------|------|
| 知识点 | 核心内容 | 操作要点 | 易混淆点/常见问题 | 难度系数 |
| 重力参数调试 | 通过项目设置调整物理引擎重力值,影响物体下落速度 | 进入项目设置→物理引擎→调整重力值(尝试9、90、20、40、60) | 重力值与物体尺寸相关;9过慢、90过快、60最接近真实效果 | ⭐⭐ |
| 碰撞检测模式 | 离散碰撞检测可能导致物体穿透,连续碰撞检测可避免 | 需开启连续碰撞检测选项 | 未开启时物体高速运动可能穿透地面 | ⭐⭐ |
| 圆柱体物理模拟 | 圆柱体比立方体更难保持平衡,更适合测试物理引擎 | 创建圆柱体→删除胶囊碰撞器→添加网格碰撞器→开启凸形→添加刚体 | 网格碰撞器需开启凸形才能正常工作 | ⭐⭐⭐ |
| 摩擦力效果验证 | 测试物体碰撞障碍物时的摩擦力表现 | 切换顶视图→让物体撞击障碍物→观察翻倒行为 | 当前场景摩擦力几乎为零,需后续调整 | ⭐⭐ |
| 传送带方向控制 | 通过读取物体旋转信息(欧拉角)控制传送带运动方向 | 定义四元数→获取Y轴欧拉角→输出调试日志验证 | 旋转值需在Update中实时读取,Start中读取无法更新 | ⭐⭐⭐ |
| 方向状态映射 | 将旋转角度(0°/90°/180°/270°)映射为四个方向状态 | 定义方向变量(0-3)→条件判断角度→分配右/左/前/后方向 | 180÷90余数为0导致逻辑冲突,需简化判断条件 | ⭐⭐⭐ |
| 多传送带协同 | 多个传送带并排设置,实现物体连续运输 | 复制传送带→调整高度差→顶视图对齐→逐个启动 | 需逐个激活传送带,且速度需分别设置 | ⭐⭐⭐ |
| 倾斜传送带尝试 | 尝试倾斜传送带实现物体爬坡效果 | 复制传送带→旋转X轴→调整高度匹配 | 角度设置不正确导致物体无法爬坡,直接掉落 | ⭐⭐⭐⭐ |