Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录

思路简介:

  1. 获取SpriteRenderer当前Sprite的顶点数据.

  1. 把顶点数据()赋值给polygonCollider2D, 刷新碰撞区域.

  1. 每帧调用达到碰撞区域动态变化的目的.

  1. 同理适用于UGUI

方式1获取sprite的vertices绘制碰撞区域:

Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第1张图片
Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第2张图片

运行效果

方式2通过sprite的GetPhysicsShape()绘制碰撞区域:

Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第3张图片
Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第4张图片

实际运行时, 碰撞器会比渲染慢一帧, 可以每次都使用下一帧sprite的数据实现画面和碰撞器的同步.

挂载组件和sprite设置参考.

Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第5张图片

参考用图

Unity:Polygon Collider2D碰撞区域随SpriteRenderer动画动态变化,解决方案记录_第6张图片

sprite不需要特殊设置

你可能感兴趣的:(unity)