Three.js 实现俄罗斯方块

最近学了一段时间three.js ,想到之前一直没能实现的俄罗斯方块,于是用three.js想办法实现了,其中图形旋转的部分参考了网上俄罗斯方块的实现利用的一个数学公式,就是平面上某个点P绕着某个点Q旋转theta角后所得坐标的公式:

假设对图片上任意点(x,y),绕一个坐标点(rx0,ry0)逆时针旋转a角度后的新的坐标设为(x0, y0),有公式:

    x0= (x - rx0)*cos(a) - (y - ry0)*sin(a) + rx0 ;

    y0= (x - rx0)*sin(a) + (y - ry0)*cos(a) + ry0 ;

这个公式我自己根本没想到。。。对于我来说主要知识盲区就在这里,其他的难度都不是很大,我的思路是先在初始化10*20个也就是200个BoxGeometry在场景里并映射到一个二维数组里面,然后设置他们的visible为false,然后操作这个二维数组动态的修改这些方块的的visible属性就行。

下面是效果图:

下面是代码实现,放到webpack工程下,直接

import Tetris from './tetris';

new Tetris(domName||null);

就可以运行了。

Github链接:https://github.com/liuyehua/webgl.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容