📅  最后修改于: 2023-12-03 14:57:54.883000             🧑  作者: Mango
运动脚本是 Unity 中的一个常用的脚本,用于控制游戏物体的运动。C# 是 Unity 中最常用的编程语言,也是编写运动脚本的首选。
在编写运动脚本之前,需要掌握以下基础知识:
以下是一个简单的运动脚本,用于让游戏物体在场景中沿 X 轴移动:
public class MoveScript : MonoBehaviour
{
// 移动速度
public float speed = 5f;
void Update()
{
// 计算移动量
float moveDistance = speed * Time.deltaTime;
// 修改位置
Vector3 newPos = transform.position + new Vector3(moveDistance, 0f, 0f);
transform.position = newPos;
}
}
以上代码的作用:
public class MoveScript : MonoBehaviour
:定义 MoveScript 类,并继承自 MonoBehaviour。public float speed = 5f;
:定义浮点型变量 speed,用于控制移动速度,并初始化为 5。void Update()
:Unity 中每帧会调用一次的方法,用于更新游戏逻辑。float moveDistance = speed * Time.deltaTime;
:计算本帧需要移动的距离,避免移动速度随机和不同帧率导致的效果不同。Vector3 newPos = transform.position + new Vector3(moveDistance, 0f, 0f);
:计算新的位置。transform.position = newPos;
:设置游戏物体的位置为新的位置。以下是一个进阶版的运动脚本,用于让游戏物体在场景中按指定路径移动:
public class PathMoveScript : MonoBehaviour
{
// 移动速度
public float speed = 5f;
// 移动路径
public Transform[] points;
private int currentPointIndex = 0;
void Update()
{
// 计算移动方向和距离
Vector3 direction = (points[currentPointIndex].position - transform.position).normalized;
float distance = Vector3.Distance(points[currentPointIndex].position, transform.position);
float moveDistance = speed * Time.deltaTime;
// 如果当前点已经到达,选择下一个点
if (distance <= moveDistance)
{
currentPointIndex++;
if (currentPointIndex >= points.Length)
{
currentPointIndex = 0;
}
return;
}
// 修改位置
Vector3 newPos = transform.position + direction * moveDistance;
transform.position = newPos;
}
}
以上代码在基础版代码基础上添加了以下功能:
public Transform[] points;
:定义存储移动路径的 Transform 数组,每个元素代表路径中的一个点,需要在 Inspector 中手动配置。private int currentPointIndex = 0;
:定义当前点的索引,用于确定下一个移动的点。Vector3 direction = (points[currentPointIndex].position - transform.position).normalized;
:计算本帧需要移动的方向,使游戏物体朝向下一个点。float distance = Vector3.Distance(points[currentPointIndex].position, transform.position);
:计算游戏物体和下一个点之间的距离。if (distance <= moveDistance)
:如果当前点已经到达,选择下一个点。currentPointIndex++; if (currentPointIndex >= points.Length) { currentPointIndex = 0; }
:如果已经到达最后一个点,返回第一个点继续移动。Vector3 newPos = transform.position + direction * moveDistance;
:计算新的位置。运动脚本是 Unity 中常用的脚本之一,可以用于控制游戏物体的运动。在编写运动脚本前,需要掌握一定的 C# 编程基础,以及 Unity 中的一些基本概念和组件。运动脚本可以根据需求进行进阶,实现复杂的运动效果。