【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},方向反转!");
    }
}
相关推荐
ytttr87329 分钟前
基于C#的CAN总线数据解析BMS上位机
android·unity·c#
雪下的新火6 小时前
ASE07-魔法药剂炼制效果
经验分享·unity·shader·ase·游戏效果
璞瑜无文9 小时前
Unity 游戏开发之入门
unity·游戏引擎
一线灵11 小时前
Axmol 引擎系列教程之 - 如何切换引擎依赖库镜像
游戏引擎
毛甘木12 小时前
Unity ComputeShader 基础语法与使用教程
unity·computeshader
小清兔12 小时前
一个unity中URP的环境下旋转天空盒的脚本(RotationSky)
开发语言·数据库·学习·程序人生·unity·c#·游戏引擎
EQ-雪梨蛋花汤12 小时前
【Unity笔记】 WorldStreamer2指南——针对大世界的流式加载与优化
笔记·unity·游戏引擎
迪普阳光开朗很健康12 小时前
适用Unity的AndroidStudio项目自动修改打包文件名称的方案
unity·游戏引擎
米芝鱼13 小时前
Unity自定义按钮
算法·ui·unity·游戏引擎·编辑器扩展
米芝鱼13 小时前
Unity自定义TextImage,鼠标悬浮显示信息
算法·ui·unity·编辑器·游戏引擎·图形渲染