这段代码是关于自动挖掘机(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;
	}
}

这段代码展示了自动挖掘机如何更新挖掘进度和位置,以及如何判断挖掘的方块是否有效。它体现了游戏开发中常见的逻辑,例如:

  • 使用状态变量来控制流程
  • 通过方法调用来实现功能
  • 使用数据结构来存储信息
  • 使用条件判断来控制逻辑

希望这篇文章能够帮助你更好地理解这段代码,并对游戏开发有更深入的认识。

自动挖掘机更新挖掘进度代码解析 -  AutoMiner UpdateDig 函数

原文地址: https://www.cveoy.top/t/topic/oSwb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录