当前位置: 首页 > news >正文

Unity:Surface Effector 2D(表面效应器 2D)

目录

什么是表面效应器 2D?

🎯 它是做什么的?

🧪 从第一性原理解释它是怎么工作的

📦 重要参数解释

为什么不直接用 Rigidbody(刚体)来控制运动 ?

所以什么时候该用哪个?

一个小例子(滑雪坡)

⚠️ 使用技巧和注意事项


什么是表面效应器 2D?

Surface Effector 2D 是一个会沿着表面施加力的组件,用来让物体在上面自动滑动或运动。

换句话说,它就像是一个会主动“推动”在它上面的东西向某个方向滑动的表面。

🎯 它是做什么的?

Surface Effector 2D 主要用在下面这些地方:

  • 制作 传送带(物体放上去自己动)

  • 制作 滑雪坡 或 水滑道(滑板、人物会自动沿地面滑动)

  • 做 流水 或 风力效果(模拟表面流体推动作用)

它是 基于物理的力作用器,不会直接改物体位置,而是通过 施加力或速度 来影响物体运动。

🧪 从第一性原理解释它是怎么工作的

我们要先明白:Unity 中所有基于 2D 物理的交互,底层其实都归结为「力(force)与摩擦(friction)」的系统。

⚙️ Surface Effector 2D 具体做了什么?

  1. 它依附于一个 Collider 2D(通常是 Box Collider 2D 或 Edge Collider 2D),表示一个“表面”。

  2. 在这个表面上的刚体(Rigidbody 2D)接触到它之后:

    • 它会对接触体施加一个 沿着表面切线方向的速度(不是力)

    • 可以让物体沿表面自动滑动或被传送

  3. 表面本身也可以设定摩擦力,这决定了物体在滑动时会不会很容易停下来。

📦 重要参数解释

参数中文解释类比
Speed施加在接触刚体上的滑动速度(单位是单位/秒)像传送带的移动速度
Force Scale控制速度施加的强度(0 到 1)越小越容易被摩擦抵消
Use Contact Force是否仅对正在接触的物体施加速度打开 = 必须贴着它才滑动;关闭 = 离它近也可能受影响
Collider通常你需要用一个 Collider(Box/Edge)挂上这个 Effector 才能起效像地面或者传送带的形状

 


 

为什么不直接用 Rigidbody(刚体)来控制运动 ?

Rigidbody 是“谁要动”;Surface Effector 是“环境让你动”。 

Rigidbody 2D(刚体):

  • 是“运动的物体自身”;

  • 它自己根据外力(力、速度、碰撞等)来决定运动方式;

  • 如果你用脚本或输入控制它,比如 AddForce()velocity = ...,你是在主动让它动。

 举例:

rb.velocity = new Vector2(10f, 0f);  // 主动让物体向右跑

这就像是你在操控一个滑板车:你踩一下滑板车,它就动了。它的运动完全取决于你输入的命令或外力。 

Surface Effector 2D:

  • 是“作用在地面或表面上的运动影响器”;

  • 它不会直接控制物体,而是对接触到它的物体施加表面速度;

  • 被影响的物体必须要有 Rigidbody,才能接收这个“滑动影响”。

📦 举例:
你做了一个斜坡(Edge Collider),挂上 Surface Effector 2D,速度设置为 5。任何带 Rigidbody2D 的物体只要碰到这个坡,就像站在传送带上,自动往下滑。你不需要写任何代码控制物体本身!

所以什么时候该用哪个?

Rigidbody

  • 玩家控制角色的输入(跳、跑)

  • 敌人 AI 自主运动

  • 飞行、跳跃、被弹起、加速等复杂运动逻辑

Surface Effector 2D

  • 自动传送带

  • 滑雪道或滑梯(角色自动滑动)

  • 模拟流体(比如水流、冰面、风吹)

 


一个小例子(滑雪坡)

你做一个滑雪游戏,角色是一块带有 Rigidbody2D 的滑板。

你画了一条山坡轨迹(比如用 Edge Collider 2D),然后加一个 Surface Effector 2D:

  • 设置 Speed = 10

  • 设置 Force Scale = 1

  • 确保角色的 Collider 是和山坡发生接触 

 

👉 效果:滑板放上去,不需要控制,它就会自动“顺着坡”滑下来!

 

⚠️ 使用技巧和注意事项

  1. Collider 必须启用 Used By Effector

    否则挂了 Surface Effector 也不会生效。

  2. 刚体必须有摩擦或贴近接触

    如果 Rigidbody2D 与表面没有实际“贴上”,就不会被施加速度。

  3. Effector 不会自动旋转速度方向

    它的滑动方向是 沿着 Collider 局部坐标系的 X 轴方向,所以如果你的地面是倾斜的,就会根据局部 X 向施加速度。

http://www.dtcms.com/a/172082.html

相关文章:

  • C++入门(上)--《Hello C++ World!》(1)(C/C++)
  • 学习海康VisionMaster之亮度测量
  • 【Bootstrap V4系列】学习入门教程之 组件-按钮组(Button group)
  • Spring 框架的底层原理
  • linux 高并发 文件句柄数 fs 及 tcp端口数调优
  • 【心海资源】telegram换U地址完整源码
  • 【算法学习】递归、搜索与回溯算法(一)
  • # 部署深度学习模型:Flask API 服务端与客户端通信实战
  • 手写 Vue 源码 === reactive 方法
  • Vim 命令从头学习记录
  • Java设计模式: 工厂模式与策略模式
  • 使用 JavaScript 实现数据导出为 Excel 和 CSV 文件
  • #基础Machine Learning 算法(上)
  • 大模型微调Fine-tuning:从概念到实践的全面解析
  • LeetCode算法题 (反转链表)Day17!!!C/C++
  • Excel VBA 自定义函数
  • 学习路线(机器人系统)
  • 【中间件】brpc_基础_TimerThread
  • Visual Studio 项目转Qt项目
  • 抖音生活服务“五一”数据:小城游火爆,“食住”消费增速显著
  • LeetCode:返回倒数第k个结点
  • 【论文阅读】Joint Deep Modeling of Users and Items Using Reviews for Recommendation
  • 部署GM DC Monitor 一体化监控预警平台
  • CGAL:Circular_kernel_2内核
  • 设计模式-基础概念学习总结(继承、多态、虚方法、方法重写)
  • 策略模式(Strategy Pattern)
  • ansible基础-优化
  • 路由器详细讲解
  • 驱动开发硬核特训 · Day 28(上篇):pinctrl 子系统详解与实战分析
  • 【阿里云大模型高级工程师ACP习题集】2.9 大模型应用生产实践(下篇)