📜  运动脚本 c# (1)

📅  最后修改于: 2023-12-03 14:57:54.883000             🧑  作者: Mango

运动脚本 C#

运动脚本是 Unity 中的一个常用的脚本,用于控制游戏物体的运动。C# 是 Unity 中最常用的编程语言,也是编写运动脚本的首选。

前置知识

在编写运动脚本之前,需要掌握以下基础知识:

  • 基本语法:变量、数据类型、表达式、控制结构、方法等
  • Unity 中的场景和游戏物体
  • Unity 中的 Transform 组件:位置、旋转、缩放
  • Unity 中的 Time 类:Delta Time(增量时间)
运动脚本基础

以下是一个简单的运动脚本,用于让游戏物体在场景中沿 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 中的一些基本概念和组件。运动脚本可以根据需求进行进阶,实现复杂的运动效果。