到底如何製作一個互動式模擬動畫呢?
只要四個步驟:「1.需求」➟「2.修改」➟「3.再修改」➟「4.成果」。讓 AI 成為你的專屬前端工程師!
第一步:向 AI 提出初步構想
我會以「摩擦力」作為主題,從頭到尾製作一次試給你看!
我第一步向我製作的 Gem『我的Html設計大師』提出需求。我的初步想法非常口語:
「我想要製作一個摩擦力的互動式動畫,我的初步想法是,左邊有一隻手在一張桌子上推著木塊,請幫我標注外力(F)、摩擦力(f)、正向力(N)和重力(W)的向量與符號,然後畫面左邊幫我畫一個會隨著我施力改變而產生的外力-摩擦力圖(F-f圖)」
是不是非常口語呢?然後他就會給我幫我寫好的「高品質提示詞」,讓我直接複製貼上到另一個對話去產生程式碼:
「請扮演一位專業的物理教育網頁開發者,幫我編寫一個完整的單一檔案 HTML/CSS/JavaScript,製作「摩擦力互動式模擬教學(Friction Simulation)」網頁。**需求規格與功能:**
1. **版面佈局:**
* 畫面分為左右兩區。
* **左側(模擬區):** 顯示桌面、木塊、以及一隻可以推動木塊的手。
* **右側(圖表區):** 顯示外力 ($F$) 對 摩擦力 ($f$) 的關係圖 ($F-f$ 圖)。
2. **互動控制:**
* 在左側模擬區下方或透過拖曳手部,使用者可以控制「施力 ($F$)」的大小(從 0 逐漸增加)。
* 提供一個「重置」按鈕。
3. **物理邏輯(核心):**
* 設定木塊質量 ($m$)、重力加速度 ($g$)、靜摩擦係數 ($\mu_s$) 與動摩擦係數 ($\mu_k$)。確保 $\mu_s > \mu_k$。
* 當施力 $F < f_{s,max}$ 時,木塊靜止,摩擦力 $f = F$(靜摩擦力)。
* 當施力 $F \ge f_{s,max}$ 時,木塊開始移動,摩擦力瞬間變為 $f_k$(動摩擦力,定值)。
* 請模擬出木塊在受力後的運動狀態(靜止或加速移動)。
4. **視覺呈現(向量與標示):**
* 在木塊重心處繪製四個力的向量箭頭,並標上代號:
* 外力 ($F$):向右,長度隨施力大小改變。
* 摩擦力 ($f$):向左,長度隨摩擦力大小改變。
* 正向力 ($N$):向上,長度固定。
* 重力 ($W$):向下,長度固定。
* 箭頭長度需與數值成正比,顏色需區分清楚。
5. **右側圖表動態繪製:**
* X 軸為外力 ($F$),Y 軸為摩擦力 ($f$)。
* 隨著使用者調整施力,即時在圖表上畫出軌跡。
* 呈現出 45 度斜線(靜摩擦區)上升到最高點,然後垂直下降到一水平線(動摩擦區)的典型特徵。
6. **技術要求:**
* 使用 HTML5 Canvas 進行繪圖。
* 所有 CSS 和 JS 寫在同一個 HTML 檔案中。
* 代碼結構清晰,變數命名具語意化。
**7. 強制浮水印功能(重要):**
請在 Canvas 動畫程式碼中加入浮水印功能。在每次繪圖循環(animation loop)的最後,務必於畫布右下角繪製半透明的文字浮水印 "© 阿偉的物理 x AI實驗室" ,字體大小適中,顏色使用淺灰色,以免干擾教學內容。」
貼上後,選擇 Canvas,按送出,他就開始幫我寫程式碼了!等了一下就完成了。
👇 我們來看看版本一的預覽畫面,直接拖動下方的滑桿,觀察變化!
第一波修正:校正方向與細節
感覺已經很完整了,但是有些細節沒有達成我想要的內容,我就跟 AI 說:
- 你手的方向畫錯了,是要向右推呢。
- 要把外力與摩擦力的向量畫出來啊。
- 右側圖裡灰色的線不要畫出來,紅色的點邊移動邊產生紅色的點就好。
- 到達最大靜摩擦力的時候幫我標注一下。
然後他就開始努力的幫我改寫程式碼了。成果如下,還是有些沒修改到喔!
第二波修正:強化物理圖示與教學體驗
那我就只好繼續跟他講我的細部想法,繼續追加需求:
- 我還是沒看到外力和摩擦力的向量啊,可以幫我標注在手的位子,一個指向質心的向量的紅色向量代表外力,然後再靠近桌面指向木塊角落的一個反方向的藍色向量代表摩擦力。
- F-f圖不需要幫我標註橘色fsmax和藍色fk虛線,但是請幫我到達最大靜摩擦力時,在圖上面標注出來最大靜摩擦力。
- 畫面會出現醒目的「達到最大靜摩擦力!」提示標籤,並在圖表上該點做特殊標記。這個做得很好,你可以提早一點點就提示「快到最大靜摩擦力了!」
- 再幫我新增一個可以調整「質量」的滑桿。
貼上後,有些修改了,有些還是沒到位。我們看看版本三的結果:
最後細節打磨:完美對準教學需求
那我就只好繼續跟他講我的想法:「你做得很好,但是我想要再細部修改一下:」
- 外力紅色向量,會隨著力量增加而變長對吧,現在變長的方式是往物體內部(向右),我可不可以讓箭頭的前端維持靠在木塊上,然後變長的方式往後(向左)伸長,這樣就不會壓到木塊裡的字。向量可以直接疊加在手上沒關係,維持手在推木塊的樣子。
- 摩擦力藍色向量,目前在木塊的左下角,我想要移到右下角,然後向量一樣抵著木塊的右下角,要變長就往後(向右)變長。
- F-f圖上到達最大靜摩擦力的時候的標注很好,那也可以用一樣的方法標出動摩擦力嗎?
- 木塊的大小可以在大一點嗎,這樣顯示的效果好像比較好。
經過這輪修改,生成的「版本四」就非常接近我想呈現的畫面,幾乎已經可以直接在課堂上使用了。👇
結論:AI 負責寫程式,你負責「教學設計」
看看我最後的成果吧!下方就是經過這些對話溝通後產出的最終互動模擬。
透過這次製作「摩擦力模擬」的過程,你可以發現:我一行程式碼都沒寫,我所做的僅僅是「精準地描述需求」與「用物理專業進行除錯」。
過去,我們因為不會寫 Code 而無法把腦中的想法具現化;現在,Gemini 就像是一位隨時待命的工程師,只要你擁有足夠的學科知識與想像力,你就能創造出專屬於你的互動教材。
別讓技術限制了你的教學,現在就開始這場「與 AI 的對話」吧!