弹球游戏瞄准线

我的思路是在按住屏幕并拖动时,生成1个测试小球,用for循环不断移动小球,在小球的prefab中用onCollisionEnter,监听碰撞,以不断修正小球运动角度。
现在的问题是在小球的prefab中,监听不到碰撞。
是不是for循环,小于碰撞监听刷新时间了,检测不到?用什么方法解决呢?或者有什么其它的做瞄准线的方法?
主程序:
self.canvas.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
let newCankBall = cc.instantiate(this.cankaoBall);
this.cankxSP.addChild(newCankBall);
newCankBall.setPosition(this.cankx , this.canky);
//用for循环移动测试小球
for( let i = 1 ; i < 50 ; i++){
this.cankx += this.ballSpeedMath.cos(Math.PI * this.cankDir / 180);
this.canky += this.ballSpeed
Math.sin(Math.PI * this.cankDir / 180);
newCankBall.setPosition( this.cankx , this.canky );
}
}
测试球prefab
onLoad () {
var manager = cc.director.getCollisionManager();
manager.enabled = true;
},
onCollisionEnter: function (other, self) {
cc.log(other.tag); //没有输出
},

你所有移动都直接在for循环内完成了,当然不会有碰撞事件…
如果你想做出移动效果,那应该放在update里去每帧改变他的坐标
但这样你也得不到你想要的瞄准线效果,而只是一个沿着路径前进的小球
如果是直线的瞄准线的话,可以使用物理引擎的射线检测,根据检测到的碰撞点,在碰撞点和起始点连线上放上几个小球即可
如果是抛物线或者其他形状的路径的话,一个办法是从起始点不停地发射小球,但是让这些小球不触发碰撞后的其他逻辑(消除计分之类的),这些小球视觉上会形成一条线

感谢,我去研究下射线检测。