作者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/cn.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