在unity3d中,使按钮a被触发时,物体移动到位置(1,1,1),按钮b被触发时,物体移动到位置(2,2,2)
时间: 2024-03-23 15:41:38 浏览: 65
Unity3D作业1
好的,以下是一个简单的示例代码,可以实现你的需求:
```
using UnityEngine;
using UnityEngine.UI;
public class MoveObject : MonoBehaviour
{
public Vector3 positionA = new Vector3(1, 1, 1); // 按钮 A 对应的目标位置
public Vector3 positionB = new Vector3(2, 2, 2); // 按钮 B 对应的目标位置
public float moveTime = 1.0f; // 移动所需时间
private bool isMoving = false; // 是否正在移动
private Vector3 targetPosition; // 当前目标位置
private float moveStartTime; // 移动开始时间
private Vector3 initialPosition; // 初始位置
void Awake()
{
initialPosition = transform.position; // 记录初始位置
}
public void OnButtonAClick()
{
if (!isMoving)
{
targetPosition = positionA; // 设置目标位置为 A
StartMove();
}
}
public void OnButtonBClick()
{
if (!isMoving)
{
targetPosition = positionB; // 设置目标位置为 B
StartMove();
}
}
private void StartMove()
{
isMoving = true;
moveStartTime = Time.time;
}
void Update()
{
if (isMoving)
{
float t = (Time.time - moveStartTime) / moveTime; // 计算移动进度
transform.position = Vector3.Lerp(initialPosition, targetPosition, t); // 插值计算当前位置
if (t >= 1.0f) // 如果移动完成了
{
isMoving = false;
}
}
}
}
```
你可以将这个脚本挂载到需要移动的物体上,然后将按钮 A 和按钮 B 分别绑定到 `OnButtonAClick()` 和 `OnButtonBClick()` 方法上。在点击按钮时,脚本会记录目标位置,并开始移动。在 `Update()` 方法中,脚本会每帧更新物体的位置,直到到达目标位置。
阅读全文