【Unity How】Unity中如何实现物体的匀速往返移动

直接上代码

cs 复制代码
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},方向反转!");
    }
}
相关推荐
国家一级摸鱼选手7 小时前
MCP(Model Context Protocol)学习笔记
unity·ai·mcp
会思考的猴子9 小时前
Unity3D发布后软件界面右下角出现Trial Version
unity
ellis197010 小时前
Unity资源管理框架Addressables[五] 构建
unity
派葛穆11 小时前
Unity-鼠标悬停改变图像位置
unity·计算机外设·交互
avi911112 小时前
图例设计软件:Focusky,VisualComponents,图片字风格化等试用和推荐,最终还是回到Unity 游戏代码
unity·ai·aigc·游戏开发·设计工具·信息图
张老师带你学12 小时前
unity道具,健身房资源
科技·游戏·unity·游戏引擎·模型
开维游戏引擎14 小时前
开维游戏引擎实例:五子棋
javascript·游戏·html·游戏引擎·ai编程
废嘉在线抓狂.14 小时前
简易拆开即用的高性能计时器(C#)
前端·unity·c#
ellis197015 小时前
Unity资源管理框架Addressables[四] 资源分组管理
unity
张老师带你学17 小时前
unity道具,哑铃架+天文望远镜,一边运动一边观星
科技·游戏·unity·模型·游戏美术