【发布时间】:2014-07-23 20:17:52
【问题描述】:
我正在使用 spriteBuilder 在 Cocos2D 3.1 版中制作游戏。我通过将帧列表添加到数组中并将其存储在缓存中来创建动画。当我需要运行动画时,我会从缓存中获取并在屏幕上播放。这对我的跑步动画非常有用。我有另一个动画,其中我的角色正在滑动。当我在跑步动画之后播放滑动动画时,我的角色似乎在半空中滑动,而不是与地面相交。造成这种情况的原因可能是因为帧是在运行动画之后立即加载的,因此它们与运行动画加载在同一位置。由于滑动动画的帧数小于运行动画的帧数,因此看起来玩家在漂浮。
我想知道是否有任何方法可以使框架负载降低一点,以便它们接触地面。是否只有在加载幻灯片动画时将英雄的位置向下推,然后在我想加载跑步动画时返回?
谢谢
【问题讨论】:
-
提示:始终为一组动画使用相同的帧大小。如果您创建精灵表,额外的透明空间将被切断。
-
@LearnCocos2D 我不确定我是否完全理解你的意思。当我在 Illustrator 中创建图形时,我将它们导出为具有透明背景的 PNG。我这样做有错吗?
-
否,但您导出的 png 文件都应该具有相同的尺寸以避免您遇到的问题 - 虽然您可以在代码中修复这个问题,该修复将是脆弱的并且根据什么框架正确应用和删除精灵当前正在显示。你不想去那里。
-
我还在使用 CGRectMake 为我的角色创建传感器。我的边界框与字符的大小成正比,例如 x 位置是 self.boundingbox.origin.x,高度是 self.boundingbox.size.height。所有具有相同尺寸的 png 文件不会影响传感器吗?
-
是的,我试过了。我的角色动画的每一帧大约是 100 x 100 像素。因此,我在 illustrator 中创建了一个 200 x 200 像素的文档并导出了 png 文件,这样每个文件现在都是 200 x 200 像素。因此,大小是相同的。显然,spritebuilder 智能 spritesheets 并没有切断额外的透明空间,因为我角色的传感器已关闭。游戏认为角色已经撞墙了,而实际上他并没有。你能告诉我如何解决这个问题吗?
标签: ios animation cocos2d-iphone spritebuilder