在Unity中,点击一个UI按钮,将一个3D物体从(1,1,1)匀速移动到(2,2,2)的代码
时间: 2024-05-11 13:19:38 浏览: 67
可以通过以下代码实现:
```csharp
using UnityEngine;
using UnityEngine.UI;
public class MoveObject : MonoBehaviour
{
public Button button; // UI按钮
public Transform target; // 目标物体
public float speed = 1f; // 移动速度
private bool isMoving = false; // 是否正在移动
private Vector3 startPos; // 起始位置
private Vector3 endPos; // 结束位置
private float startTime; // 开始时间
private float journeyLength; // 移动距离
private void Start()
{
// 获取起始位置和结束位置
startPos = target.position;
endPos = new Vector3(2f, 2f, 2f);
journeyLength = Vector3.Distance(startPos, endPos);
// 注册按钮点击事件
button.onClick.AddListener(StartMoving);
}
private void Update()
{
if (isMoving)
{
// 计算移动距离比例
float distCovered = (Time.time - startTime) * speed;
float journeyFraction = distCovered / journeyLength;
// 移动物体
target.position = Vector3.Lerp(startPos, endPos, journeyFraction);
// 判断是否到达目标位置
if (journeyFraction >= 1f)
{
isMoving = false;
}
}
}
private void StartMoving()
{
// 开始移动
isMoving = true;
startTime = Time.time;
}
}
```
将该脚本挂载到场景中的任意一个物体上,然后将需要移动的物体赋值给 `target` 变量,将需要点击的UI按钮赋值给 `button` 变量,即可实现点击按钮移动物体的功能。
阅读全文