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)  

posted @   namezhyp  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
历史上的今天:
2021-05-10 存储系统笔记
点击右上角即可分享
微信分享提示