如何手动绘制精灵表的一部分?


9

我在Unity中工作,发现在2D游戏中动画师没有为我要尝试的工作工作。我想使用Sprite表格构建特定的动画,并能够将相同的动画与按单元格具有相同大小和尺寸的其他Sprite重复使用。经过研究,我发现这是不可能的。

相反,我试图创建自己的动画脚本,但是我不明白如何告诉Unity只绘制精灵的一部分。类似于XNA,您可以使用开始和结束坐标仅渲染精灵的特定矩形。

如何手动绘制精灵表的一部分?


3
在Unity中可以做到这一点,而无需复制动画数据,并且需要一点技巧。有效地,您使用spritesheetA播放动画A,然后在LateUpdate中将每个SpriteRenderer的Sprite交换为spritesheetB的模拟对象。有一个有关此技术的Unity视频;如果以后可以找到它,我将其发布为答案,并详细说明。这样一来,您就可以充分利用Unity本地动画系统的全部功能,而不必从头开始编写自己的动画。
DMGregory

您应该尝试Spine或其他骨骼动画软件。它具有皮肤功能,使您可以保持相同的骨骼动画,但是可以根据需要交换和更改皮肤。我个人使用Spine是因为它很简单,有教程,并且它有一个统一的运行时,使一切变得超级简单。缺点是它确实要花钱,但是基本版本可以为您提供制作动画所需的一切。专业版使它变得更加轻松快捷。
Savlon '18

如果您在UI上工作,请使用遮罩
virtouso

Answers:


1

我认为可以有一种更简单的方法来执行此操作,并且仍然对动画使用Unity Mecanim。

脚步:-

1)您可以从图像中以编程方式分配纹理2D精灵,并且由于它是网格,因此这样做并不困难。在下面的答案中,用户创建了自己的sprite slicer,并将其保存到目录中(可选,否则将其保存在变量中)。您不需要整个代码,只需检查GetSprites()函数,您就会明白:)

http://answers.unity3d.com/questions/576799/coding-my-own-auto-slicer-getting-islands-of-pixel.html

2)一旦能够做到这一点,然后维护一个从步骤1中获得的精灵数组。

3)现在,您需要创建这些精灵的动画文件,可以将其插入mecanim。为此,您需要Unity的“设置曲线”功能(请检查下面提供的链接)。拥有剪辑后,您可以决定将其保存以备将来使用,还是仅将其保存在当前游戏实例的变量中。

http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

希望这能解决您的疑问:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.