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