【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},方向反转!");
    }
}
相关推荐
世洋Blog7 小时前
Unity中图片的内存中占用大小、AB占用大小、内存形式
unity·游戏引擎
熬夜敲代码的小N7 小时前
Unity热更新技术详解
unity·游戏引擎
地狱为王15 小时前
Cesium for Unity 去除Cesium Logo
unity·游戏引擎·cesium
BuHuaX16 小时前
Lua入门
开发语言·unity·junit·c#·游戏引擎·lua
wonder1357918 小时前
RectTransform位置计算方法和UI自适应
ui·unity·ugui
世洋Blog18 小时前
Unity发布自己的插件包
unity·游戏引擎
ytttr8731 天前
基于C#的CAN总线数据解析BMS上位机
android·unity·c#
雪下的新火1 天前
ASE07-魔法药剂炼制效果
经验分享·unity·shader·ase·游戏效果
璞瑜无文1 天前
Unity 游戏开发之入门
unity·游戏引擎
一线灵2 天前
Axmol 引擎系列教程之 - 如何切换引擎依赖库镜像
游戏引擎