打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
cocos2dx 2D光照效果
勤奋不止
>《游戏引擎cocos2d》
2015.09.11
关注
----更新(2013-11-15)
实现了动画的2D光照效果。
视频:
http://player.youku.com/player.php/sid/XNjM1MTk4NDEy/v.swf
----原帖
光照计算是在纹理空间中进行的,因此需要将光源转化到纹理空间,具体方法如下:
fishLeftUpPos_world=this->convertToWorldSpace(ccp(0,this->getContentSize().height));//原因见:
http://user.qzone.qq.com/350479720/blog/1384482833
lightRelativeToFishLeftUp=lightPos_world-fishLeftUpPos_world
A=-this->getRotation()*pi/180;//cocos2d-x里旋转是顺时针为正,而数学里旋转是逆时针为正,所以这里要加负号
Xdir=CCPoint(cosA,sinA);//fishSprite旋转后的X轴
Ydir=CCPoint(cos(A+pi/2),sin(A+pi/2));//fish旋转后的Y轴
x=ccpDot(texLeftUpPosToLightPos, Xdir);//lightRelativeToFishLeftUp向Xdir投影,得到light在以fish左上角为原点,Xdir、Ydir为坐标轴的坐标系中的x坐标
y=ccpDot(texLeftUpPosToLightPos, Ydir);//lightRelativeToFishLeftUp向Ydir投影,得到light在以fish左上角为原点,Xdir、Ydir为坐标轴的坐标系中的y坐标
lightPos_texSpace=CCPoint(x/this->getContentSize().width,y/this->getContentSize().height);//纹理坐标需要归一化
light2DInTexSpace.y=-light2DInTexSpace.y;//不过考虑到cocos2d-x中纹理t轴向下,故应取反。得到light在fish的纹理空间中的坐标
截图:
视频:
http://player.youku.com/player.php/sid/XNjM0ODY5NTMy/v.swf
参考:
http://www.alkemi-games.com/a-game-of-tricks/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
cocos2dx创建工程
Cocos2dx 中create后,如果调用retain(),则不用的时候要调用release。 如果调用addchild,则要调用removefromparint;
Cocos2dLua3.17.2集成FairyGUI(一)
黑科技:用Unity编辑器+Cocos引擎开发3D MMORPG
常用的 cocos2d
cocos2d
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×