求助~~~~关于使用cocos creator 做类似于捕鱼的炮塔发射子弹的问题!!!!

关于捕鱼中子弹发射的问题求助!

问题描述

  • 要实现目标
    • 点击屏幕位置,炮移旋转到触摸位置(这步已经实现);
    • 炮旋转完之后,发射子弹.并且子弹的发射方向为触摸点的方向(这个遇见问题了);
  • 目前实现方式
  • 建立了一个炮的节点 cannon
  • cannon节点下新建了一个空节点 muzzle, 这个节点用于初始化子弹的初始位置.
  • 子弹目前是一个预置件 bulletPrefab
  • 触摸的时候,实例化 bulletPrefab,并将它添加到 muzzle节点上,初始化其位置为 muzzle的位置;
  • 相关代码实现
start(){ 
    // this.touchHandler为canvas节点
    if(this.touchHandler){
       this.touchHandler.on(cc.Node.EventType.TOUCH_START,(event)=>{
          var touches = event.getTouches();
          var touchLoc = touches[0].getLocation(); 
          var x = touchLoc.x;
          var y = touchLoc.y;
          var cannonWorldPos = self.cannon.parent.convertToWorldSpaceAR(self.cannon.getPosition());
          var pos = cc.p(touchLoc.x - cannonWorldPos.x, touchLoc.y - cannonWorldPos.y);
          var angle = cc.pAngleSigned(pos,cc.p(0,1));
          var degress = cc.radiansToDegrees(angle);
          var action = cc.rotateTo(0.5,degress);

         var muzzle = cc.find('/muzzle',self.cannon);
          var finished = cc.callFunc(()=>{
                    cc.log('rotateTo over');
                     // 执行完炮的旋转操作之后.初始化子弹的操作
                     var bullet = cc.instantiate(this.bulletPrefab);
                     bullet.parent = self.cannon;
                     bullet.position = muzzle.getPosition();
                     var shootDir = cc.pSub(target, mountWorlPos);
                     var normalize = cc.pNormalize(shootDir);
                     var overShootVector = cc.pMult(normalize,2000);
                     var screen = cc.pAdd(this._currentBullet.getPosition(), overShootVector);
                     var action = cc.moveTo(1,screen);
                     var finished = cc.callFunc(()=>{
                              cc.log('finished moveTo');
                     });

                    bullet.runAction(cc.sequence(action,finished));
                });
         
         //执行炮的旋转动作
          self.cannon.runAction(cc.sequence(action,finished));
     },this);
  }
}
  • 以上代码出现的问题
  • 子弹称魂方向不是触摸的位置.
  • 发射过程中存在角度偏移.
  • 网上查了不少关于此项内容…试了许多.但是都不是能得到正确的结果.使用cocos creator 时间不长…

求助

求助

求助

  • ps: 本人cocos creator 小白.望各路大神不吝赐教.感谢列位了…

补充说明一下

  • 刚发的问题描述莫名其妙的没有了…

问题描述

  • 期望
  • 子弹发射方向为炮指向的方向.
  • 相关节点说明
    cannon为炮的节点,muzzle是cannon下的空节点,用于初始化子弹位置.bullet是做的预置件.实例化的时候添加到cannon节点上.
  • 请教大神们提供一下思路,或者指出错误之处…不胜感激…谢谢列位…

提供一些思路

  1. 子弹cc.instantiate(this.bulletPrefab)之后要独立出来挂载到canvas的专属node之下,以免被炮塔的位置数值影响到
  2. 子弹的移动处理需要独立出来
  3. 炮塔与子弹的原始素材朝正y方向会比较好使
  4. 可以参考 https://github.com/cocos-creator/game-space-shooter 这个demo