关于捕鱼中子弹发射的问题求助!
问题描述
- 要实现目标
- 点击屏幕位置,炮移旋转到触摸位置(这步已经实现);
- 炮旋转完之后,发射子弹.并且子弹的发射方向为触摸点的方向(这个遇见问题了);
- 目前实现方式
- 建立了一个炮的节点 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 小白.望各路大神不吝赐教.感谢列位了…