← 全部概念
操作手感 / 13
挤压与拉伸
用形变表现速度与冲击
交互演示
交互演示 · 移动指针或点击画面,观察变化
挤压与拉伸会沿物体的运动方向缩放它。高速运动时拉长,落地时短暂压扁,同时在另一条轴上应用倒数比例的缩放,使视觉上的大小保持稳定。这里两个球的弹跳轨迹完全相同,只有右边的球通过形变表现出了速度与落地冲击。
适用场景
用视觉变换突出速度或落地冲击。在 2D 中,对另一条轴应用倒数比例的缩放可以保持面积不变;在 3D 中,保持体积则需要在另外两条轴上进行补偿。
实现示例
不依赖特定引擎的伪代码。请根据你使用的引擎调整函数和坐标约定。
stretch = 1.3
visual.scaleY = stretch
visual.scaleX = 1 / stretch
// 碰撞后,将两个缩放值平滑恢复到 1。常见错误
除非本来就想改变碰撞,否则应让碰撞形状保持独立。把视觉变换的枢轴放在接触点,避免挤压时看起来像角色滑进了地板。
内容原作 Nicolas Zullo · 中文整理与交互改编