【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},方向反转!");
    }
}
相关推荐
平行云4 小时前
实时云渲染预启动技术解析:UE数字孪生应用的延迟优化机制(二)
linux·unity·ue5·webgl·实时云渲染·云桌面·像素流
WiChP7 小时前
【V0.1B10】从零开始的2D游戏引擎开发之路
java·数据库·游戏引擎
心前阳光10 小时前
Unity之PhotonServer使用注意
unity·游戏引擎
玖玥拾12 小时前
Cocos学习笔记:关节机制与物理交互
游戏引擎·cocos2d
Mark White13 小时前
行为树(Behavior Tree):从 ROS 机器人到 Unity 游戏 AI 的统一决策范式
游戏·unity·机器人
小贺儿开发14 小时前
Unity UGUI 可视化热区编辑与交互系统
unity·编辑器·游戏引擎·交互·工具·适配·ugui
郝学胜-神的一滴17 小时前
中级OpenGL教程 007:解决背面光照异常高光问题
c++·unity·游戏引擎·three.js·opengl·unreal
RReality17 小时前
【Unity Shader URP】水面效果 实战教程
unity·游戏引擎·图形渲染
游乐码17 小时前
c#基础(七)延迟函数
开发语言·unity·c#·游戏引擎
LONGZETECH17 小时前
Unity 3D+C/S架构无人机数字孪生实训室:破解实训“三高”难题的底层技术实现
c语言·开发语言·3d·unity·架构·无人机