Cocos 2.4.9 如何获得模型的宽高场
时间: 2024-09-24 12:13:33 浏览: 23
在Cocos2d-x v2.4.9版本中,获取模型(Sprite或Node下的任何Model)的宽度(width)和高度(height)通常需要访问其尺寸属性或者直接从模型精灵本身获取。以下是步骤:
1. 对于`Sprite`对象(如果模型是以纹理形式显示的):
```cpp
Sprite* modelSprite = ...; // 获取到模型精灵实例
float width = modelSprite->getContentSize().width;
float height = modelSprite->getContentSize().height;
```
2. 对于使用`cc::Model`对象:
```cpp
cc::Model* model = ...; // 获取到模型实例
size_t vertexCount = model->getVertexCount();
if (vertexCount > 0) {
const Vec2& vertices[4] = {model->getVertices()[0], model->getVertices()[vertexCount / 2], model->getVertices()[vertexCount - 1], model->getVertices()[vertexCount / 2]};
float width = std::max(vertices[1].x - vertices[0].x, vertices[3].x - vertices[2].x);
float height = std::max(vertices[1].y - vertices[0].y, vertices[3].y - vertices[2].y);
}
```
这里的`getContentSize()`函数返回的是精灵的实际内容大小,包括旋转和缩放的影响,而`getVertices()`则返回的是模型的基本顶点信息,可以根据顶点计算出大致的宽度和高度。
注意,这种方法假设模型有规则形状并能通过顶点近似其边界。如果模型不规则或者有透明区域,这可能不是最准确的结果。