Unity C# 球体移动控制:添加惯性,摄像机跟随
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方法会在所有物体更新完之后执行,确保球体移动完毕后,摄像机再跟随球体移动。
总结
通过以上步骤,你就可以实现球体的移动控制,并添加惯性效果,最后让球体跟随摄像机移动。你可以根据需要调整代码中的参数,例如 speed 和 inertia,来改变球体移动的速度和惯性程度。
希望这篇文章能帮助你更好地理解如何在 Unity 中使用 C# 代码控制物体移动。
原文地址: https://www.cveoy.top/t/topic/mRDa 著作权归作者所有。请勿转载和采集!