拇指射箭!你能击中靶心吗?效果预览配置环境:cocoscreator3dv1.0.0玩法:长按屏幕,拖动瞄准,松手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分!实现原理流程图:镜头控制:两个摄像头用于控制镜头显示。一种是发射视角的相机;另一个是绑定到箭头节点的相机,它会随着箭头移动。摄像机的切换是通过控制摄像机节点的active来实现的。弓箭控制:弓箭的位置是通过将触摸的移动距离乘以一个调节系数来控制的。privateonTouchMove(touch:Touch){constdelta=touch.getDelta();this.NodePos_bows.x-=delta.x*CONST_TOUCH_FACTOR;this.NodePos_bows.y+=delta.y*CONST_TOUCH_FACTOR;}为所有需要控制位置的Node写了一个通用的组件脚本。只需将此脚本添加到节点中,即可通过设置x,y,z来调整位置。导出类NodePos扩展组件{private_curPos:Vec3=cc.v3();开始(){this._curPos=this.node.position;}getx(){returnthis._curPos.x;}setx(x:number){this._curPos.x=x;}//省略部分代码update(deltaTime:number){this.node.position=this._curPos;}}launcharrow:使用tween控制箭头位置,在launchresult中加入重力、风向、距离的影响。并为箭头添加了尾部组件。tweenUtil(this.NodePos_arrow).stop().to(5,{z:targetZ,x:targetX,y:targetY}).to(1,{}).call(()=>{this.gameOver();}).start()得分计算:通过计算箭头与靶心的距离,以及目标的半径关系,即可计算得分。constdis=this.NodePos_arrow.position.clone().subtract(this.NodePos_target.position).length();constscore=dis
