作者kons (kons)
看板GameDesign
標題[請益] unity使用transform撞牆抖動問題
時間Mon Nov 23 04:25:16 2020
我使用transform來使角色移動,
把地圖物件和角色加上碰撞之後,只要角色撞到障礙物件,
角色就會開始抖動,然後卡死。
推測應該是利用transform角色要移動到該格,但該格又有碰撞,所以產生BUG,
利用rigidbody2D的方式移動就不會產生該問題,
但目前用rigidbody2D沒辦法做到一次移動一格,
請問有什麼比較好的解決方法嗎?謝謝。
--
至今我仍然深深相信,我是個
帥哥,不過是
量子力學定義中的
帥哥。
當沒人觀測我的時候,我肯定是全地球最帥的男人。
Line:kons0815
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.32.178 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1606076720.A.8CB.html
1F:推 nimajneb34: 聽起來你要棋盤式移動又要有物理 可以試試看 棋盤式+ 11/23 04:36
2F:→ nimajneb34: 檢查下一個來播放動畫或是物理+計算到下一個所需的力 11/23 04:36
3F:→ nimajneb34: 道和速度 11/23 04:36
感謝回覆,
我物理主要是要拿來做場景碰撞,讓角色在地圖上無法走過障礙物(避免穿牆),
剛網路查了一下,似乎可以用addforce給角色一個反向力抵銷,有點複雜。
4F:推 nimajneb34: add force推動物體 但是預設是有摩擦力的 摩擦力也可 11/23 05:05
5F:→ nimajneb34: 以調整 11/23 05:05
6F:推 ura1210: 我猜應該是物理偵測器在該幀判斷已經碰到障礙物但是腳本 11/23 08:34
7F:→ ura1210: 還是繼續往前引發抖動 可以試試快接近障礙物時 自己判斷 11/23 08:34
8F:→ ura1210: 下一幀是否碰到障礙物提前停止 11/23 08:34
9F:推 LayerZ: 試試看fixedupdate 11/23 09:10
10F:→ LayerZ: 因為物理跟update其實不同步,update修改transform就跟物 11/23 09:11
11F:→ LayerZ: 理衝突.. 11/23 09:11
12F:→ LayerZ: 看是要直接控制速度vec,或是乾脆不要用物理 11/23 09:12
感謝各位大大的建議,
請教大神後,利用 private void OnCollisionEnter2D(Collision2D collision)
發生碰撞後,直接回到原本位置就行了。
※ 編輯: kons (180.177.32.178 臺灣), 11/24/2020 00:50:51
13F:推 sableangle: 你需要 rigibody.MovePosition 11/25 00:32