【Unity How】Unity中如何实现物体的匀速往返移动
直接上代码
using UnityEngine;
public class CubeBouncePingPong : MonoBehaviour
{
[Header("移动参数")]
[Tooltip("移动速度")]
public float moveSpeed = 2f; // 控制移动的速度
[Tooltip("最大移动距离")]
public float maxDistance = 5f; // 最大移动范围
private Vector3 startPosition; // 初始位置
private float currentOffset = 0f; // 当前偏移量
private int direction = -1; // 初始方向(-1 向下,1 向上)
void Start()
{
// 记录物体的初始位置
startPosition = transform.position;
}
void Update()
{
// 更新偏移量,基于方向移动
currentOffset += direction * moveSpeed * Time.deltaTime;
// 到达边界时自动反向
if (currentOffset <= -maxDistance)
{
currentOffset = -maxDistance; // 保持在边界
direction = 1; // 改为向上
}
else if (currentOffset >= 0)
{
currentOffset = 0; // 保持在边界
direction = -1; // 改为向下
}
// 更新物体位置
transform.position = startPosition + new Vector3(0, currentOffset, 0);
}
void OnCollisionEnter(Collision collision)
{
// 检测到碰撞后反转运动方向
direction *= -1;
// 打印碰撞信息(可选)
Debug.Log($"碰撞到 {collision.gameObject.name},方向反转!");
}
}