【cocos2dx】卡牌记忆游戏(1)——卡牌类

这篇博客介绍了如何使用Cocos2d-x框架设计一个卡牌类,以创建卡牌记忆游戏。文章讨论了如何通过调整精灵的RotateBy和Scale属性来实现卡牌的翻转效果,解决3D旋转带来的问题,并添加了点击事件来响应卡牌的翻转。最后,作者展示了如何使卡牌能够响应点击并完成翻转动画。
摘要由CSDN通过智能技术生成

(Cocos-2.2.6 & Framework-3.5)

唔,做个简单的卡牌游戏吧,叫做记忆大考验。游戏模仿自【冒险岛OL】 。嗯,我也是老岛民了,不过已经肝不动了。

游戏大概是这样子


戏规则很简单,有若干张卡片,每次翻到两张相同的就能翻出卡牌,翻出所有卡牌则结束。

那么问题来了,我们要一个卡牌(类),而且能让它翻转。

我们先找找精灵的翻转效果。

很幸运,cocos2dx里面有个RotateTo和RotateBy类。RotateTo和RotateBy类的构造器类似。区别就在XxxxTo和XxxxBy的区别。

我们常用的应该是这个:

* @param durationDuration time, in seconds.
* @param deltaAngleIn degreesCW.
static RotateBy*create(float duration, float deltaAngle);
 
RotateBy* myRotate =RotateBy::create(1.0f, 90);


既然是翻牌,那就只要沿着Y轴或者X轴转就可以了,比较符合常规的是绕着Y轴转,就是左右翻牌。我们选择这个构造器

* @param durationDuration time, in seconds.
* @paramdeltaAngleZ_X In degreesCW.
* @paramdeltaAngleZ_Y In degreesCW.
static RotateBy*create(float duration, const Vec3& deltaAngle3D);
                              
RotateBy* myRotate =RotateBy::create(1.0f, Vec3(0, 90, 0));


很好,转起来了,不过稍微有点不合预期。

第一,   这是3D旋转,我们可以看到有消失点了。

第二,这个旋转是绝对地旋转,我们的这个精灵转一次之后,图案就左右镜面对称了。可以想象,如果我们的卡牌上面有文字的话,那就不好了。

我们稍微改造一下,不能无脑使用RotateBy了。

RotateTo* myRotate =RotateTo::create(1.0f, Vec3(0, 90, 0));
RotateTo* myRotate2= RotateTo::create(0, Vec3(0, 270, 0));
RotateTo* myRotate3= RotateTo::create(1.0f, Vec3(0, 0, 0));
auto sq =Sequence::create(myRotate, myRotate2, myRotate3, nullptr);
mySprite->runAction(RepeatForever::create(sq));


很好,对称问题可以解决了。不过消失点问题是改变不了的了,因为他是基于3D坐标系旋转的。

 

我们另辟蹊径。翻牌的视觉效果上看,有点像把卡牌压扁了再伸展出来&#x

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值