游戏主要逻辑:
1.坦克等3d模型随屏幕一起移动,即放在父节点transform为reset的条件下作为camera的子节点。模型在相机前的位置通过调整其与它的父节点偏移。不然由于嵌套的多层父子关系带着相对偏移导致运行时放置在相机结点下会出现不可控的结果。
2.由屏幕点击位置,确定世界位置点B,相机位置点A,AB两点连成一条线,由此延伸到碰撞球体,得到球体模拟的世界空间中世界目标点,即为攻击目标点。
3.各种炮弹做成prefab,其中包括炮弹模型,射击特效,爆炸特效,音效,还有自身的运动轨迹控制。
4.切换到其中一种模式的攻击,点击屏幕一点,触发攻击(创建炮弹,触发发射),并得到攻击目标点(炮弹运动目标点)。
5.打击目标点是世界空间一点,不随屏幕移动,始终在真实世界空间中,即受陀螺仪控制,当开发场景处在横屏中,而不是竖屏,电脑上不能模拟陀螺仪的旋转,固屏幕上的模型,和炮弹都要做着竖过来做,之后在手机上它们会被陀螺仪旋转90度。
技术要点:
1.屏幕ugui,canvas camera 为世界camera,camera四条发散线连接UI canvas 四角。
2.碰撞球体网格为内侧面贴图的,这样建立的mesh collider 就只检测从内侧面的碰撞。
3.碰撞球体以屏幕UI为中心参考,一侧为相机发射点,一侧为碰撞球体内侧面一半。球体大小为大于屏幕UI些许即可。
4.碰撞球体放在canvas层级下,这样它随屏幕UI移动和缩放。而发射出的炮弹和模型放在非canvas下,放在世界空间中。