我需要一段在unity中使A和B物体分开直线运动c#代码,要求速度1.2mm/s,先A沿x轴正方向走5cm,再让b沿y轴正方向走5mm,再让A沿x轴负方向走5c,然后再返回,在重复,要记录时间m
时间: 2023-12-08 07:03:04 浏览: 94
绘制unity中物体运动的轨迹
3星 · 编辑精心推荐
以下是符合您需求的C#代码:
```c#
using UnityEngine;
public class ObjectMovement : MonoBehaviour
{
private float speed = 0.0012f; // 设置速度为 1.2mm/s
private Vector3 positionA = new Vector3(0.05f, 0f, 0f); // A物体初始位置
private Vector3 positionB = new Vector3(0f, 0.005f, 0f); // B物体初始位置
private float distance = 0.05f; // A物体运动距离
private float waitTime = 1f; // 停留时间
private float timer = 0f; // 记录时间
private void Update()
{
timer += Time.deltaTime; // 记录时间
if (timer >= waitTime) // 等待一段时间后开始运动
{
if (transform.position != positionA) // A物体向x轴正方向运动
{
transform.position = Vector3.MoveTowards(transform.position, positionA, speed * Time.deltaTime);
}
else if (transform.position == positionA && transform.position != positionB) // B物体向y轴正方向运动
{
transform.position = Vector3.MoveTowards(transform.position, positionB, speed * Time.deltaTime);
}
else if (transform.position == positionB && transform.position != -positionA) // A物体向x轴负方向运动
{
transform.position = Vector3.MoveTowards(transform.position, -positionA, speed * Time.deltaTime);
}
else if (transform.position == -positionA && transform.position != Vector3.zero) // 返回原点
{
transform.position = Vector3.MoveTowards(transform.position, Vector3.zero, speed * Time.deltaTime);
}
else if (transform.position == Vector3.zero) // 运动结束,重置时间和位置
{
timer = 0f;
transform.position = positionA;
}
}
}
}
```
这段代码会让物体在场景中按照您的要求进行直线运动,并记录每次运动的时间。注意,这段代码中的物体是当前脚本所挂载的物体,如果您想让其他物体进行运动,需要将代码中的 `transform` 替换为对应的物体的 `Transform` 组件。
阅读全文