Cocos2d-x:如何改变多个插槽上的纹理



spine/cocos2dx有一些问题(这里是非常初级的级别,所以如果我在问题描述中缺少一些信息,请告诉我(

我正在使用cocos2dx创建脊椎骨架模型;骨架使用一个图集进行初始化,该图集映射有一个图像,每个插槽/附件都有很多纹理。我也有其他图像文件用作纹理,但这些文件是单独的(初始图谱/图像是所有纹理的一体式(

我正在尝试更改不同附件上的纹理,但我遇到了一些问题,因为插槽有多个附件,需要从一个图像文件加载,该文件只包含原始图集中的纹理子集

一个例子(可能太详细了(:

  • 原始图谱/精灵图像具有"衬衫"的图像结构,由3个部分组成,3个附件(即2个袖子和1个主体(
  • 我有一个新的sprite图像,它只由3件衬衫组成(就像从原始图集图像中提取的一样(,遵循相同的结构/比例,但像素也更大,所以如果你缩小整个图像,它最终会映射到原始图像/图集上

我正在使用此代码加载简单的资产(png文件中的一个纹理((例如:帽子或口罩,由一个部件组成(,它似乎可以工作,但我不知道如何在多个资产图像上执行相同的操作(一个png有2个袖子和1个身体,三个部件中的每一个都有3个插槽(

Texture2D *texture = new (std::nothrow) Texture2D();
cocos2d::Size sz = cocos2d::Size(image->getWidth(), image->getHeight());
bool textureCreatedSuccessfuly = texture->initWithData(image->getData(), image->getDataLen(), Texture2D::PixelFormat::RGBA8888, image->getWidth(), image->getHeight(), sz);
spMeshAttachment* mesh ;
mesh = SUB_CAST(spMeshAttachment, slot->attachment);
AttachmentVertices *attachmentVertices = SUB_CAST(AttachmentVertices, mesh->rendererObject);
attachmentVertices->_texture = texture;

为什么不在脊椎文件中使用皮肤,因为不同皮肤的附件具有不同的纹理。您可以一次只设置特定的皮肤,以显示具有该纹理的脊椎。

spinefile->setSkin("yellow_shirt");

最新更新