[GBA教程]新增(非替换)NPC的行走图

以行走图mingdi(冥帝)为例。

在event_objects.h中添加mingdi的枚举值,并更新NUM_OBJ_EVENT_GFX和的OBJ_EVENT_PAL_TAG_DYNAMIC值。

#define OBJ_EVENT_GFX_MINGDI                     243
#define NUM_OBJ_EVENT_GFX                        244
#define OBJ_EVENT_PAL_TAG_MINGDI                  0x1124

define OBJ_EVENT_PAL_TAG_DYNAMIC 0x1125

在object_event_graphics.h文件中添加新的精灵数据定义,为mingdi创建图像和调色板引用。

const u32 gObjectEventPic_Mingdi[] = INCBIN_U32("graphics/object_events/pics/people/mingdi.4bpp");

const u16 gObjectEventPal_Mingdi[] = INCBIN_U16("graphics/object_events/pics/people/mingdi.gbapal");

在event_object_movement.c文件的sObjectEventSpritePalettes数组中添加mingdi的色板条目,以便游戏能够加载和使用这个色板。

{gObjectEventPal_Mingdi,                OBJ_EVENT_PAL_TAG_MINGDI},

 

在object_event_pic_tables.h文件中为mingdi创建图像表,使用标准的行走动画结构。

static const struct SpriteFrameImage sPicTable_Mingdi[] = {

overworld_ascending_frames(gObjectEventPic_Mingdi, 2, 4),

};

在object_event_graphics_info.h文件的末尾,在那里添加新的图形信息结构gObjectEventGraphicsInfo_Mingdi

const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mingdi = {

.tileTag = TAG_NONE,
.paletteTag = OBJ_EVENT_PAL_TAG_MINGDI,
.reflectionPaletteTag = OBJ_EVENT_PAL_TAG_NONE,
.size = 256,
.width = 16,
.height = 32,
.paletteSlot = PALSLOT_NPC_1,
.shadowSize = SHADOW_SIZE_M,
.inanimate = FALSE,
.compressed = FALSE,
.tracks = TRACKS_FOOT,
.oam = &gObjectEventBaseOam_16x32,
.subspriteTables = sOamTables_16x32,
.anims = sAnimTable_Standard,
.images = sPicTable_Mingdi,
.affineAnims = gDummySpriteAffineAnimTable,

};

在object_event_graphics_info_pointers.h文件中添加mingdi的指针引用。

[OBJ_EVENT_GFX_MINGDI] =                   &gObjectEventGraphicsInfo_Mingdi,

在object_event_graphics_info_pointers.h文件中添加gObjectEventGraphicsInfo_Mingdi的外部声明。

extern const struct ObjectEventGraphicsInfo gObjectEventGraphicsInfo_Mingdi;

在spritesheet_rules.mk添加编译规则

$(OBJEVENTGFXDIR)/people/mingdi.4bpp: %.4bpp: %.png

$(GFX) $&lt; $@ -mwidth 2 -mheight 4</code></pre><p> </p>
支持这篇文章点赞、收藏或分享给朋友
DISCUSSION

发表评论

留下你的想法

输入 @用户名 可以提及站内用户0 / 5000