unity 对于对象刚体不断抖动的处理
在2d unity中,给对象增加碰撞体以后,有时候会出现当前测试的物体移动时,撞到其他碰撞体上歪倒的情况。遇到此情况,首先先检查一下两个碰撞双方的碰撞范围是否正常,其次考虑修改碰撞方式。
常规代码都是使用transform组件下的坐标来进行移动。刚体用这种方式移动时,每次命令物体移动,都会先进行移动判定,玩家操作的物体挤入另一刚体,然后判定已经进入了刚体的碰撞体范围,随即退出,造成不断抖动的现象。
解决方法是在代码中写坐标移动函数时,改为使用刚体的坐标移动判定。
脚本内类先声明一个Rigidbody2D rigidbody2d; start()中获取当前对象的刚体组件
rigidbody2d=getComponentt(Rigidbody2D>();
假设玩家是算出移动的向量position后加到transform.position中,
Vector2 position=.....
transform.position=position;
那么改为rightBody.position=position即可
此外,为了保证物理计算间隔稳定,可以考虑把坐标移动的代码放在fixedUpdate()函数
fixedUpdate 固定时间更新 与普通的Update相比,它更新的时间间隔相同,默认0.02ms
(其他的代码,比如输入检测,建议放到Update函数就行,因为一般电脑的性能跑帧数会大于50帧,除非你的电脑性能太差)
另:伪透视,指的是模仿人眼效果对物体间遮罩进行处理,比如人站在树前时应该遮住树,站在树后时应该被树遮住。这个在unity中修改一下设置即可,实际上就是依赖y值进行判定。如果需要的话可以把中心点priot调整到底部。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
2021-05-10 存储系统笔记