unity随记
对于tilemap ,需要设置碰撞体的话应该为其选择专用的tilemap collider2D (假设是2d游戏)。注意,直接给对象tilemap加会导致整张地图都无法移动,如果为部分地图设置碰撞体,需要在资源里的rule tile(看自己用的是什么瓦片地图)中,针对不同的砖块,不需要碰撞的collider type从sprite改成none。
另:rule override tile可以让一套瓦片继承另一套瓦片的拼接规则,但是他们的碰撞体设置也会被继承。如果需要让瓦片组B的碰撞体能单独设置,需要使用advanced rule override tile。
此外,每个瓦片都是一个碰撞体,存在微小的间隙。为了减少计算量、防止bug;给瓦片地图设置碰撞体时,在rigidbody中勾选used by composise,type选择static,并增加一个composite collider。这样一来i,一堆碰撞体就会被合并成一个大的碰撞体。
--------------------------
碰撞体collider组件里有一个选项trigger,即触发器。打开触发器功能,意味着碰撞体发生碰撞时,只记录发生了碰撞,但不阻止移动。这就意味着对象B可以穿过刚体A,但触发器会启动。
触发器有三种方法:进入(enter)、停留(stay)和离开
enter只在物体B进入物体A碰撞体范围时触发一次,stay则是进入后每帧触发一次(需要设置slppeing mode为never sleep,不然物体停止移动时会进入休眠,不再触发)
在使用了触发器的物体上,可以用
void OnTriggerEnter2D(Collider other) 这个方法来写发生触发时的行为,other就是碰到携带当前脚本对象的那个碰撞者。
-------------------------------------
如果不勾选触发器,则二者碰撞时可以使用对应的碰撞方法。
如:OnCollisionEnter2D(Collision2D other)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2021-05-10 存储系统笔记