【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},方向反转!");
    }
}
相关推荐
郑寿昌3 小时前
UE6 AI加速Lumen光线追踪降噪技术解析
人工智能·游戏引擎
晴夏。4 小时前
GAS下的网络同步的全面分析【超级全面】
游戏引擎·ue·gas·网络同步
田鸡_4 小时前
Unity新输入系统(Input System)教学篇
unity·游戏引擎·游戏程序
EQ-雪梨蛋花汤4 小时前
【Unity笔记】Unity 音游模板与免费资源:高效构建节奏游戏开发全指南
笔记·unity·游戏引擎
星辰徐哥4 小时前
Unity基础:游戏对象的激活与隐藏:SetActive方法详解
游戏·unity·lucene
微莱羽墨4 小时前
零、0基础入门Unity 安装详细教程(2026最新版教程,安装Unity看这一篇就够了!)
unity·游戏引擎·unity安装
星辰徐哥4 小时前
Unity C#入门:变量的定义与访问权限(public/private)
unity·c#·lucene
nnsix5 小时前
Unity 刚体的 默认力、瞬时力 区别
unity·游戏引擎
nnsix5 小时前
Unity Sprite的 Generate Physics Shape 参数解释
unity·游戏引擎
魔士于安5 小时前
Unity完整小球迷宫项目
前端·unity·游戏引擎·贴图·模型