点击进入游戏,操作方式,wsad为上下左右,q,e左右旋转视角,项目就是参照最强大脑鲍云挑战的项目写的。
我技术比较菜,好多地方用的比较简单暴力的方法,源码就不放了,下面写一下要点和踩过的坑:
- 实现第一人称还是挺简单的,把角色(我只做了一只手)作为摄像机的子节点,然后写一个移动摄像机的代码就行了,如果要实现第三人称,就把摄像机作为人物的子节点。
- 3D动画如果没绑定骨骼的话没办法播放,像我的门自动开就是用动作系统代替,但动作系统的api只支持x,y的移动(3D节点也可以移动),我一开始导入的模型需要移动的是z轴,所以就在建模软件旋转后重新导了一次。
- camera.getRay(touchPos)方法这个貌似有点问题,只有镜头正对着canvas的时候才有用。后来我测试了一天射线自己写了,格式如下:ray={
d:cc.v3()//射线的方向,一般做一个长度为1的向量。如{x: -0.6202144987375378, y: 0, z: -0.7844322632042519}
o:cc.v3()//射线起点,世界坐标,
} - 使用基础物体创建的plane在射线检测时总是会被检测到,无论放在哪里,distance都在e-13左右的数量级。我的结论就是会用3d软件就不要用原生物体了。
- 3D节点触摸无效。
- this.node.eulerAngles.y不能直接赋值,用rotationY可以运行,但后台会报警,所以我用以下方法代替:
this.node.eulerAngles =cc.v3(-9, this.rotationy, 0); - 我用的建模软件是blender,建模过程中用过镜像的话,导入cocos后会导致光影反过来,就是面对光源是黑的,而背对光源是亮的,没办法,我只能重新建模
8.最后就是游戏体验像二十年前的3D游戏,不知道是不是我技术太渣,锯齿挺严重的,帧率感人,玩一下容易头晕。
PS:我是转行自学了两个月cocoscreator,目前正在找工作,目的地是在深圳,如有深圳的小伙伴希望能帮忙内推个职位哈