After Effects 動畫技巧:近距離反應 (Proximity-Animation) 教學

更新於 發佈於 閱讀時間約 8 分鐘
raw-image

動畫設計中,我們常會遇到這樣的情境,當一個物件靠近某個控制點時,要讓它自動被推開或吸引過去,就像磁鐵、引力場、能量波動、彈力膠條的那種動態互動感。
這類互動式動畫效果,在 After Effects 中其實可以透過一段簡單的表達式來實現。

設計動畫時,我們常會希望畫面中的物件根據彼此的距離產生變化,例如:

  • 元素靠近中心時自動放大、變亮
  • 粒子靠近控制點時被彈開或吸附
  • UI 圖形滑過時才顯示、縮放、變清晰

📌 什麼是「近距離反應」Proximity-based Animation?

「近距離反應」指的是:當一個圖層與某個參考點(通常是 null 控制器)的距離越近,就越強烈地觸發動畫效果;距離越遠,效果就越微弱,甚至完全沒有。
它模擬了物理世界中的磁力場、重力吸引、光源衰退等概念,讓畫面更有動態互動感與空間層次。


這種根據距離觸發變化的設計,在 After Effects 中稱之為:
近距離反應(Proximity-based Animation)


raw-image

一、你需要 3 個圖層:

  1. Null 1 命名(null)控制移動它來影響其他圖層
  2. Null 2 命名(controller) 放置滑桿控制器( Slider Control)
  3. Shape Layer 影響的物件任意圖層(文字、圖形、影像)

二、加上控制器( Slider Control)

  1. 選擇 controller 圖層
  2. 點選功能列:Effect → Expression Controls → Slider Control
  3. 加兩個滑桿並命名:
  • 第一個命名為 distance
  • 第二個命名為 strength

三、套用表達式

  1. 選取你要加推擠效果的物件圖層
  2. 按 P 展開 Position 屬性
  3. 按住 Alt(Win)或 Option(Mac) 點一下 Position
  4. 貼上以下完整表達式:
nullPos = thisComp.layer("null").transform.position; //控制圖層的位置
objPos = transform.position;
maxDist = thisComp.layer("controller").effect("distance")("Slider"); //最大影響距離
strength = thisComp.layer("controller").effect("strength")("Slider"); //影響強度
dist = length(nullPos, objPos);
dir = normalize(objPos - nullPos);// 向 null 推開

moveAmount = strength * (1 - clamp(dist / maxDist, 0, 1));//計算要移動多少距離
newPos = objPos + dir * moveAmount;
newPos;
raw-image

四、測試效果!

  1. 移動 null 圖層靠近物件
  2. 你會發現物件是否被推出去
  3. 調整 controller 上的滑桿數值
raw-image


distance:越大,影響範圍越廣
 strength:越大,推開力越強



📌 概念簡單說明:

這個表達式主要在做的是:

  • 計算「目標物件(例如你當前圖層)」與一個 NULL 控制點 之間的距離,
  • 然後根據這個距離,去 推動或拉動這個物件的位置。
  • 拉力的強度與距離有關:越近 → 拉力越強;越遠 → 拉力越弱,直到超出最大距離就沒影響。

🎯表達式延伸應用有哪些

raw-image
  • 把推開效果改成吸引效果只需要把這一行:{dir = normalize(objPos - nullPos);}
    改成:{dir = normalize(nullPos - objPos);}
  • 或是直接變更controller 圖層中的Slider Control控制器
nullPos = thisComp.layer("null").transform.position; //控制圖層的位置
objPos = transform.position;
maxDist = thisComp.layer("controller").effect("distance")("Slider"); //最大影響距離
strength = thisComp.layer("controller").effect("strength")("Slider"); //影響強度
dist = length(nullPos, objPos);
dir = normalize(nullPos - objPos); // 向 null 吸過去

moveAmount = strength * (1 - clamp(dist / maxDist, 0, 1));//計算要移動多少距離
newPos = objPos + dir * moveAmount;
newPos;

【Opacity】逐漸透明

添加在Shape Layer 圖籌中的Opacity(Alt+T)

raw-image
nullPos = thisComp.layer("null").transform.position;
objPos = transform.position;
maxDist = thisComp.layer("controller").effect("distance")("Slider");

dist = length(nullPos, objPos);
normDist = clamp(dist / maxDist, 0, 1);

linear(normDist, 0, 1, 100, 10); // 距離越遠越透明

【Scale】逐漸縮小

添加在Shape Layer 圖籌中的Scale(Alt+s)

raw-image
nullPos = thisComp.layer("null").transform.position;
objPos = transform.position;
maxDist = thisComp.layer("controller").effect("distance")("Slider");

dist = length(nullPos, objPos);
normDist = clamp(dist / maxDist, 0, 1);

baseScale = 150;// 最近數直
minScale = 20; // 最遠數直
s = linear(normDist, 0, 1, baseScale, minScale);
[s, s];




原始貼文教學:https://www.jan1lab.com/blog/proximity-animation


「近距離反應」是一種簡單卻非常實用的動畫邏輯,在 After Effects 中結合 length()clamp()linear() 後,就能讓畫面元素根據彼此的距離自然變化,打造出有深度、有互動的動畫體驗。

不論是 UI 動效、角色動畫還是抽象視覺,都能用這個技巧快速提升表現力。

如果文章對你有幫助,可以支持我並取得AE原始專案檔。

留言
avatar-img
留言分享你的想法!
avatar-img
JAN1 LAB 動畫實驗室
8會員
12內容數
JAN1 動畫實驗室,專業創造角色IP,包括動畫、漫畫、遊戲等不同領域。我們致力於創造有趣、充滿魅力的角色,並透過精湛的技藝,將這些角色帶入不同的媒體平台,打造出具有廣泛影響力的IP。 https://www.jan1lab.com/
2025/05/26
這篇文章提供 After Effects 表達式教學,說明如何輕鬆製作倒數計時器和碼錶效果,包含不同格式的倒數計時、累加計時器以及倒數結束的提示字元顯示等,並提供程式碼範例和進階應用技巧。
Thumbnail
2025/05/26
這篇文章提供 After Effects 表達式教學,說明如何輕鬆製作倒數計時器和碼錶效果,包含不同格式的倒數計時、累加計時器以及倒數結束的提示字元顯示等,並提供程式碼範例和進階應用技巧。
Thumbnail
2024/07/18
本文介紹瞭如何使用 Photoshop 和 Cinema 4D 創建手繪風格動畫場景。從照片處理到模型建模、材質貼圖、額外元素建模、光線和打光、渲染與後期處理,逐步解說了創建過程。通過這些建議,你將能夠創建一個既細緻又富有動畫效果的手繪風格場景,為你的動畫作品增添獨特的魅力和視覺吸引力。
Thumbnail
2024/07/18
本文介紹瞭如何使用 Photoshop 和 Cinema 4D 創建手繪風格動畫場景。從照片處理到模型建模、材質貼圖、額外元素建模、光線和打光、渲染與後期處理,逐步解說了創建過程。通過這些建議,你將能夠創建一個既細緻又富有動畫效果的手繪風格場景,為你的動畫作品增添獨特的魅力和視覺吸引力。
Thumbnail
2024/07/17
本文介紹了在After Effects中使用表達式為圖層添加延遲效果的方法,通過根據層的索引相對於其父層的索引來計算延遲時間,並應用到層的位置屬性上,可以創建連續的延遲效果,使每個層根據其索引值產生不同的延遲,形成鏈條效應。
Thumbnail
2024/07/17
本文介紹了在After Effects中使用表達式為圖層添加延遲效果的方法,通過根據層的索引相對於其父層的索引來計算延遲時間,並應用到層的位置屬性上,可以創建連續的延遲效果,使每個層根據其索引值產生不同的延遲,形成鏈條效應。
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
在這一章中,我們介紹了 CSS 的過渡效果和動畫效果。過渡效果使 CSS 屬性的變化更加平滑,而動畫效果則允許我們更精細地控制元素的多個屬性隨時間變化的過程。我們通過基本語法和示例展示了如何使用這些效果,並提供了一個綜合應用的實踐案例來幫助理解。這些技術可以讓你的網頁更具互動性和動態效果。
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Motion Tile 連續圖 / 背景 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
本文介紹了在After Effects中使用表達式為圖層添加延遲效果的方法,通過根據層的索引相對於其父層的索引來計算延遲時間,並應用到層的位置屬性上,可以創建連續的延遲效果,使每個層根據其索引值產生不同的延遲,形成鏈條效應。
Thumbnail
本文介紹了在After Effects中使用表達式為圖層添加延遲效果的方法,通過根據層的索引相對於其父層的索引來計算延遲時間,並應用到層的位置屬性上,可以創建連續的延遲效果,使每個層根據其索引值產生不同的延遲,形成鏈條效應。
Thumbnail
Adobe After Effects 中,LoopOut 是一個非常有用的表達式,用於創建層屬性(如位置、旋轉、透明度等)的循環動畫。這個表達式可以幫助設計師自動重複一段關鍵幀動畫,而不需要手動複製和粘貼這些幀。 指令基本樣式 loopIn(type="cycle", numKeyfram
Thumbnail
Adobe After Effects 中,LoopOut 是一個非常有用的表達式,用於創建層屬性(如位置、旋轉、透明度等)的循環動畫。這個表達式可以幫助設計師自動重複一段關鍵幀動畫,而不需要手動複製和粘貼這些幀。 指令基本樣式 loopIn(type="cycle", numKeyfram
Thumbnail
Ae 小技巧:Mask path 轉成形狀路徑 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Mask path 轉成形狀路徑 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:宣紙噪點+抽幀效果 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:宣紙噪點+抽幀效果 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Adjustment Layer 調整圖層 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Orbit 環繞效果 + 物件面對鏡頭 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
Ae 小技巧:Null Object 控制物體旋轉 動態後記系列會記錄一些我在製作中的記錄,可能是分解動畫、小技巧、發想、腳本......等等。 每篇都是小短篇,就是補充用的小筆記,沒有前後順序,可跳著閱讀。
Thumbnail
介紹如何使用 Warp 效果來製作箱子擠壓效果!
Thumbnail
介紹如何使用 Warp 效果來製作箱子擠壓效果!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News