【问题标题】:Cocos2d-x :How to change texture which go on multiple slotsCocos2d-x :如何改变在多个插槽上的纹理
【发布时间】:2018-12-01 11:05:27
【问题描述】:

spine/cocos2dx 有一些问题(这里非常初级,所以如果我在问题描述中遗漏了一些信息,请告诉我)

我正在使用 cocos2dx 处理脊柱骨架模型;骨架使用一个图集进行初始化,该图集映射有一个图像,每个插槽/附件都有很多纹理。我还有其他图像文件可用作纹理,但它们是分开的(初始图集/图像是所有纹理的一体式)

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

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

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

我正在使用此代码加载简单的资源(png 文件中的一个纹理)(例如:帽子或面具,它们由单块组成)并且它似乎正在工作,但我不知道如何在多资产图像上做同样的事情(一个带有 2 个袖子和 1 个主体的 png,这三个部分中的每一个都将在 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;

【问题讨论】:

  • 你想在多张图片上设置多资产。是真的吗?

标签: c++ objective-c cocos2d-x


【解决方案1】:

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

spinefile->setSkin("yellow_shirt");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    相关资源
    最近更新 更多