自动挖掘机更新挖掘进度代码解析 - AutoMiner UpdateDig 函数
这段代码是关于自动挖掘机(AutoMiner)的,它实现了名为 "UpdateDig" 的函数,用于更新挖掘的进度和位置。
代码首先检查是否存在待挖掘的方块 (this.HasDigCell),如果没有则返回。然后检查是否旋转完成 (this.rotation_complete),如果没有则返回。
接下来,使用 Diggable.DoDigTick 方法更新挖掘进度,并计算挖掘进度的百分比 (percentComplete),同时设置矿物采集声音的百分比。
接着,代码计算挖掘机臂的位置 (position),并使用 SetClipRadius 设置挖掘机臂的动画半径。
最后,代码检查挖掘的方块是否有效 (ValidDigCell),如果无效则将其设置为无效方块 (Grid.InvalidCell),并将旋转状态设置为未完成 (this.rotation_complete = false)。
以下是代码的详细解释:
// AutoMiner
// Token: 0x0600236A RID: 9066 RVA: 0x000C00A0 File Offset: 0x000BE2A0
public void UpdateDig(float dt)
{
// 检查是否存在待挖掘的方块
if (!this.HasDigCell)
{
return;
}
// 检查是否旋转完成
if (!this.rotation_complete)
{
return;
}
// 更新挖掘进度
Diggable.DoDigTick(this.dig_cell, dt);
// 计算挖掘进度的百分比
float percentComplete = Grid.Damage[this.dig_cell];
// 设置矿物采集声音的百分比
this.mining_sounds.SetPercentComplete(percentComplete);
// 计算挖掘机臂的位置
Vector3 a = Grid.CellToPosCCC(this.dig_cell, Grid.SceneLayer.FXFront2);
a.z = 0f;
Vector3 position = this.arm_go.transform.GetPosition();
position.z = 0f;
// 计算挖掘机臂的动画半径
float sqrMagnitude = (a - position).sqrMagnitude;
this.arm_anim_ctrl.GetBatchInstanceData().SetClipRadius(position.x, position.y, sqrMagnitude, true);
// 检查挖掘的方块是否有效
if (!AutoMiner.ValidDigCell(this.dig_cell))
{
// 设置挖掘方块为无效
this.dig_cell = Grid.InvalidCell;
// 设置旋转状态为未完成
this.rotation_complete = false;
}
}
这段代码展示了自动挖掘机如何更新挖掘进度和位置,以及如何判断挖掘的方块是否有效。它体现了游戏开发中常见的逻辑,例如:
- 使用状态变量来控制流程
- 通过方法调用来实现功能
- 使用数据结构来存储信息
- 使用条件判断来控制逻辑
希望这篇文章能够帮助你更好地理解这段代码,并对游戏开发有更深入的认识。
原文地址: https://www.cveoy.top/t/topic/oSwb 著作权归作者所有。请勿转载和采集!