unity2d平面移动代码,完美一点
时间: 2024-10-07 09:07:21 浏览: 25
在Unity 2D中,平移游戏对象通常是通过获取其Transform组件并直接修改位置属性来实现的。下面是一个基础的脚本示例,它演示了如何让游戏对象按用户输入的方向做平滑的直线移动:
```csharp
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
// 定义速度变量
public float speed = 5.0f;
// 当前移动的方向
private Vector2 moveDirection = Vector2.zero;
void Update()
{
// 获取玩家输入
moveDirection = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
// 如果有输入,开始移动
if (moveDirection.sqrMagnitude > 0)
{
// 将单位向量转换为距离,并将其与速度相乘得到实际移动值
moveDirection = moveDirection.normalized * speed * Time.deltaTime;
// 移动游戏对象
transform.position += moveDirection;
}
}
// 播放移动动画或者平滑移动时使用此函数
void LateUpdate()
{
transform.position = Vector3.Lerp(transform.position, transform.position + moveDirection, .1f);
}
}
```
在这个例子中,`Update`方法负责处理用户的输入,并根据输入计算移动方向和速度。`LateUpdate`用于平滑移动,它使用Lerp函数逐渐改变当前位置,避免突然跳动。
阅读全文