看板 Flash 關於我們 聯絡資訊
使用AS2.0 首先我的認知是 Flash的角度使用徑度 而且原點在正下方 因此 /| /30| 這樣的話必須計算 -30/360*Math.PI*2 往右則是30/360*Math.PI*2這樣 接著 我需要宣告一個移動的軌跡速度 因此我給obj一個v(速度)和r(角度) 現在我需要做的事情是 某個目標物朝另一個目標物的"正下方"發射東西 決定角度 A   B /θ| _______C___________________________ 基準面 AB是目標物,C是A的正下方投影點 B要發射東西 我的初步想法是計算 (B.x-C.x)/(B.y-C.y) 這會是tanθ 然後Math.atan((B.x-C.x)/(B.y-C.y)) 這樣應該是θ值本身 所以我令obj.r=Math.atan((B.x-C.x)/(B.y-C.y)) 接著物體移動是這樣的 obj.x+=obj.v*Math.sin(obj.r)/360*Math.PI*2 obj.y+=obj.v*Math.cos(obj.r)/360*Math.PI*2 接下來就有問題了,反正結果不如我預期 原本4/3應該會是tan53之類的東西 結果atan(4/3)之後出來的竟然不是53而是-0.9xxxxxxxxx 害我不知道該如何是好 有人知道盲點在哪嗎?(死 -- ◥▇◣◣ \ ╲   ◢ ◥█████◣ 川澄 舞 /‘ d▄▄▄◣ /‘ ◥██████▌ Kwawasumi Mai ▂▄▄▄▄▆ ───██████ ◢█   —◢█ ── █████ 力の覚醒.魔力放出 ◥██◤██ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.151.194 ※ 編輯: KawasumiMai 來自: 61.62.151.194 (03/19 17:02)
LPH66:因為 atan 出來的值單位已經是 radian 了.... 03/19 18:30
LPH66:再來即使不管這個問題 你的 /180*Math.PI 也放錯地方了... 03/19 18:31
KawasumiMai:請問哪邊有誤? 03/19 20:49
peacedove:反過來 *180/pi 03/19 21:03
peacedove:deg:rad = 180 : pi 你可以用比例去驗證你的算式 03/19 21:04
peacedove:喔 我看錯了 你搞錯了 應該是向一樓說的 atan出來的 03/19 21:06
peacedove:東西就是radian了 可是rotation吃的是degree 03/19 21:06
peacedove:然後sin,cos是吃rad沒錯 可是你對sin /180*pi做什麼?? 03/19 21:09
peacedove:啊 我沒注意是as2.0 r跟三角吃的東西一不一樣不確定 03/19 21:11
peacedove:而且我不確定as2.0有沒有atan2,沒有的話 你用atan還要再 03/19 21:12
peacedove:加上一堆判斷 atan出來的角度範圍應該是 +-2pi之間 03/19 21:13
cjcat2266:AS2有atan2 03/20 00:38
peacedove:上面又打錯 是正負pi/2 03/20 02:43
LPH66:我二樓推的意思是 Math.sin(degree/180*Math.PI) 這樣... 03/20 07:43
LPH66:也就是說 就算你的變數是度為單位也得這樣寫才行 03/20 07:43
LPH66:那現在 atan 出來的值已經單位是 radian 了 03/20 07:43
LPH66:那就直接 Math.sin(obj.r) 就行了.... 03/20 07:44
KawasumiMai:感謝各位回覆,我再研究看看 03/21 11:14
KawasumiMai:我成功了QQ 03/21 12:16