我们要从Collision2D或者Collision2D的碰撞点然后根據碰撞点的法线去判断是从那个方向碰撞的
可以通过判断发生碰撞的方向实现类似于超级马里奥踩死敌人的效果
CharacterController 不会受到scene的重力影响自带物理碰撞检测,在脱离导航网格的应用场景下(比如飞行)是很有优势的unity内部碰撞原生工具组件。如果在复杂的应用场景里会有多种CC碰撞檢测的需求,记录下我碰到的三种碰撞需求和解决方案
需要产生碰撞效果,让CC停止只需要在场景里刷上碰撞器,并加上OnControllerColliderHit回调处理逻輯。
CC遇到UI上的BoxCollider也会产生碰撞效果有个小招是把UI的Collider的物理效果去掉
勾上IsTrigger,就不会和CC产生碰撞,然而这种方法实在上不了台面还会影响UI。unity内蔀碰撞的物理管理器提供了多种数据配置可以设置层碰撞矩阵
在相互不作用的层上勾去。
CC之间 大部分时候都不需要碰撞作用的吧不理解为什么CharacterController没有一个明显的屏蔽基佬的标志,
然而用各种姿势试了试都没有什么卵用最后用了万能的Physics.IgnoreCollision,看到这个接口的时候我都乐了unity内蔀碰撞 Is Funny
全是在学官教时遇到的坑然后數小时后爬出来.同时会添加到处学来的的unity内部碰撞技巧
这时候UI作为整个地图的一部分应该新建一个Canvas设置为WorldSpace。把Canvas拉到所需大小和位置
比如对话框,有Panel有Text单纯设置WorldSpace是没法正确显示的。
应该将Dynamic Pixels Per Unit设置的尽量大一些这个选项表示如Text等嘚每一单位渲染的像素,值越大Text可以显示的越小
血条小小的跟在玩家头上,需要Slider所在的Canvas跟随当前主相机
2.UI内部件对应的设置锚点,比如某button保持在左下角则该button的锚点设为左下
3.勾选Pixel Perfect(防止由高分辨率转为低分辨率时字体模糊)
4.Reference Resolution填为你在制作时嘚分辨率。比如我在时制作的UI现在要做自适应时填成该分辨率,则在测试时不同分辨率依然保持同样位置大小
我们要从Collision2D或者Collision2D的碰撞点然后根據碰撞点的法线去判断是从那个方向碰撞的
可以通过判断发生碰撞的方向实现类似于超级马里奥踩死敌人的效果