Unity C# 球体移动控制:添加惯性,摄像机跟随

本文将带你学习如何在 Unity 中使用 C# 代码控制球体移动,并添加惯性效果,最后让球体跟随摄像机移动。

1. 控制球体移动

首先,在你的球体物体上添加一个 C# 脚本,并添加以下代码:

using UnityEngine;

public class BallController : MonoBehaviour
{
    public float speed = 10f; // 移动速度
    public float inertia = 0.5f; // 惯性系数
    private Vector3 velocity = Vector3.zero; // 当前速度

    void Update()
    {
        // 获取输入
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");

        // 计算速度变化
        Vector3 inputVelocity = new Vector3(h, 0, v) * speed;
        velocity = Vector3.Lerp(velocity, inputVelocity, inertia);

        // 移动球体
        transform.Translate(velocity * Time.deltaTime);

        // 限制球体在摄像头视野内移动
        Vector3 pos = transform.position;
        pos.x = Mathf.Clamp(pos.x, -5f, 5f);
        pos.z = Mathf.Clamp(pos.z, -5f, 5f);
        transform.position = pos;
    }
}

代码解释:

  • speed:球体的移动速度。
  • inertia:惯性系数,控制球体速度变化的平滑程度。
  • velocity:球体当前速度。
  • Input.GetAxis("Horizontal")Input.GetAxis("Vertical") 获取键盘左右和上下方向的输入。
  • Vector3.Lerp(velocity, inputVelocity, inertia) 使用线性插值计算当前速度,实现惯性效果。
  • transform.Translate(velocity * Time.deltaTime) 移动球体。
  • Mathf.Clamp 限制球体在摄像头视野内移动。

2. 摄像机跟随球体

在你的摄像机物体上添加一个 C# 脚本,并添加以下代码:

public Transform ball; // 球体的 Transform 组件

void LateUpdate()
{
    // 将摄像头位置赋给球体
    ball.position = transform.position;
}

代码解释:

  • ball:球体的 Transform 组件,需要在 Inspector 面板中将你的球体物体拖放到该字段。
  • LateUpdate 方法会在所有物体更新完之后执行,确保球体移动完毕后,摄像机再跟随球体移动。

总结

通过以上步骤,你就可以实现球体的移动控制,并添加惯性效果,最后让球体跟随摄像机移动。你可以根据需要调整代码中的参数,例如 speedinertia,来改变球体移动的速度和惯性程度。

希望这篇文章能帮助你更好地理解如何在 Unity 中使用 C# 代码控制物体移动。


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

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