需求起因,最近制作角色2D八方向的动画,美术提供的序列帧图片资源,角色不同动作不同方向的图片大小和角色实际的中心点是不一致的,如图所示:攻击和溃败的序列帧图片尺寸和角色在图片中心位置是不一样的。
这样会导致一个问题:在动画状态切换的时候,犹豫锚点不一致的原因会导致位置的瞬间偏移,但这样导出序列帧资源也有一个好处是最大程度的降低图片尺寸。
那么解决这个问题方案是修改序列帧图片的锚点,将图片锚点设置在角色脚下,这样切换动画的时候就会以脚底为锚点解决位置偏移的问题。
代码设置Texture锚点,只需要先设置好一个模板texture,同一个动画的其他图片根据模板设置即可,通过Texture获取到其TextureImporter,再修改SpritePivote:
TextureImporter textureIm = AssetImporter.GetAtPath(path) as TextureImporter;
textureIm.spritePivot = tempSprite.spritePivot;
在实际执行时发现这个方式并没有生效,奇怪的是,手动在SpriteEditor下设置锚点时,Pivot自动从Center切换成了==>