位置: 编程技术 - 正文
推荐整理分享Bullet(cocos2dx)学习制作桌球游戏之前期准备,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
使用cocos2dx结合bullet设计一款简陋的桌球游戏,就是为了回顾前期学过的bullet。
首先要把桌球游戏需要的基本资源准备好,个球,1个白球,1张台球桌,球杆可有可无。
先看看目前实现的效果
至于这张台球桌的模型,我是随便设计一下
当然这个模型只是为了加载raw文件(静态网数据),为了使模型的贴图显示出来,
我使用Blender直接创建了一个Plane,然后将台球桌的贴图贴在Plane上,于是就能以假乱真的
实现一个台球桌
在游戏开始前,初始化物理环境,加载一张台球桌,设置相应的物理属性,按规则摆放好台球。
1.设置重力为(0.f, -9.8f, 0.f),以模拟真实的物理环境。
2.加载台球桌
首先将台球桌的贴图模型加载进游戏,设置相应的位置,
然后加载台球桌的物理网,还记得PhysicisMesh3D吗,并调整好位置,
当然比较不好设置的就是台球桌的物理属性,什么摩擦系数啊,弹性系数啊,滚动摩擦系数啊
3.摆放台球
对于球来说摆放的顺序是这样的,在网上找的规则
黑8放在第三行的中间位置,白色的为全色球,黑色的为花色球。
可以这样设想,只要定义一个数组存放每个位置的球号就行了,
BALLS_NUMBER[0] = 1;
BALLS_NUMBER[1] = 2;
BALLS_NUMBER[2] = 9;
BALLS_NUMBER[3] = ;
BALLS_NUMBER[4] = 8;
BALLS_NUMBER[5] = 3;
BALLS_NUMBER[6] = 4;
BALLS_NUMBER[7] = ;
BALLS_NUMBER[8] = 5;
BALLS_NUMBER[9] = ;
BALLS_NUMBER[] = ;
BALLS_NUMBER[] = 6;
BALLS_NUMBER[] = ;
BALLS_NUMBER[] = ;
BALLS_NUMBER[] = 7;
球号是我自己按照规则随便放的。
下面就是如果将这些球放好,
假设每个球半径为0.f,球都在Y坐标为0的位置,那么关键就是如何确定每个球的
X,Z.台球摆放好无论多少行都是个等边三角形,以3行为例
先放置第一个球,以后每一行的第一个球都是按照蓝色箭头的方向放置,假设上为Z,右为X
那么第二行第一个球就是(ball[1].posX ball.radius, ball[1].posZ √3*ball.radius)
设方向向量为dir(ball.radius, 0, √3*ball.radius);
即ball[2].pos = ball[1].pos dir
第三行就是ball[3].pos = ball[1].pos dir * 2;
一次类推ball[n].pos = ball[1].pos dir * (n-1);
对于同一行的第k个球就是同一行的第一个球.pos.x - 2 * radius;
看上面代码
根据提前的设计加载相应的球号。
ballPos = dir * i;
ballPos.x = -1.f;
ballPos.z = offsetZ;
设置每行第一个球的位置
最后就是加载白球,白球要特别独立出来
4.更新物理世界
每一帧都去更新实际上是很浪费资源的,当所有的球都不动时,其实没必要更新,但是只有不到个球,
性能不会影响,当游戏中出现大量的物体时,就要重载btMotionState,这个以后讨论。
5.测试一下
当点击屏幕是给白球施加一个冲量,记住一定要先唤醒物体,不然不会有效果的
_whiteBallBody->setActivationState(ACTIVE_TAG);
_whiteBallBody->applyCentralImpulse(btVector3(0.f, 0.f, -.5f));
总结:
不是美工,模型什么的设计很费劲,贴图都是网上找的。
台球桌,台球的物理属性,调整麻烦,目前调整的还不好
对于添加的Sprite3D一定要设置CameraMask不然是不会被看到的。
添加光照,使物体具有立体感
源码下载
Bullet库的设置方法请参考
如何使用 cocos2dx 3.2 TTF (xcode) 环境:Xcode6.1.1cocos2dx3.2RC0在网上看了很多的相关文章,发现能编译通过,但是运行出来不对。然后捣鼓了半天终于成功了。==||如下图,找到这个文件拖
cocos2dx-3.x(二)、坐标系 1、cocos2dx的坐标系和OpenGL坐标系一样,都是屏幕左下方为坐标原点,横轴向右x,纵轴向下y;IOS,Android,WP等使用的是标准屏幕坐标系,坐标原点是屏幕
cocos2dx-3.x(三)、场景切换及可能产生的错误 1、新建一个.cpp文件和一个.h文件2、记得确保把他们添加到classes文件夹中,否则在#includeYourScene.h时,可能会报错:错误:无法打开源文件确保的标准是
标签: Bullet(cocos2dx)学习制作桌球游戏之前期准备
本文链接地址:https://www.jiuchutong.com/biancheng/372751.html 转载请保留说明!友情链接: 武汉网站建设