Cocos2dx杂记:Cocos2d 3.x版本 MeshSprite Cocos的网格变换(非原创)

原文连接: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点击下面的连接下载

MeshSprite下载

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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值