原文连接:Cocos2d-x MeshSprite类实现扭曲效果
Sprite 默认只有四个点,即quad,不能做一些图片扭曲的效果。MeshSprite类,MeshSprite可以自动根据参数row,column创建Texture的网格点,并且你可以获取对这些点动态设置坐标点。
1、MeshSprite源码地址:
https://github.com/2youyouo2/cocos2d-x/blob/v3-html-meshsprite/cocos/2d/CCMeshSprite.h
https://github.com/2youyouo2/cocos2d-x/blob/v3-html-meshsprite/cocos/2d/CCMeshSprite.cpp
如果无法访问github点击下面的连接下载
2、获得网格点
void MeshSprite::setVertice(int row, int column, const Point &p)
{
_datas[row*_columns + column].vertices = Vec2(p.x, p.y);
_dirty = true;
}
Point MeshSprite::getVertice(int row, int column)
{
return _datas[row*_columns + column].vertices;
}
void MeshSprite::setTexCoord(int row, int column, const Point &tex)
{
_datas[row*_columns + column].texCoords = Tex2F(tex.x, tex.y);
_dirty = true;
}
Point MeshSprite::getTexCoord(int row, int column)
{
Tex2F& t = _datas[row*_columns + column].texCoords;
return Point(t.u, t.v);
}
3、使用方法:可以通过设置纹理坐标和网格点进行图形扭曲变换
MeshSprite * sp = MeshSprite::create(5, 3, "res/Guide/NPC1.png");
sp->setPosition(Vec2(360, 540));
this->addChild(sp, INT_MAX);
//获得定点和纹理坐标,然后通过set方法进行扭曲变换
auto v = sp->getVertice(i, j);
auto t = sp->getTexCoord(i, j);