//------------------------------------------------------------------------- public void doLocalFire(int bullet_objid, float bullet_speed) { mBulletFirePos = mTurretPos + CLogicUtility.getDirection(mTurretAngle).normalized *mBarrelOffset; mCSpriteTurretShow.fireAt(mTurretAngle); int bullet_vibid = mVibTurret.BulletDataKey.Id; CRenderBullet bullet = new CRenderBullet(mScene); bullet.create(mPlayer.et_player_rpcid, bullet_objid, bullet_vibid, bullet_speed, _getLockedFishIdFromLockedBuffer(), mBulletFirePos, mTurretAngle, mVibTurret.HitFishParticleDataKey); int vib_compose_data_id = getVibTurret().EffectComposeFire.Id; mScene.addEffect(vib_compose_data_id, new Dictionary <string, object>(), EffectTypeEnum.Client); mScene.getListener().onSceneFire(mPlayer.et_player_rpcid, getPlayerGold()); }
//------------------------------------------------------------------------- void _die(uint et_player_rpcid, int total_score) { if (mIsDie) { return; } mPlayerId = et_player_rpcid; mTotalScore = total_score; mSpriteFreeFromTimeFactor = true; // 播放鱼死亡时候的粒子特效 mFishParticleMgr.fishDie(); // 显示掉落金币数字 if (total_score > 0) { CSpriteFishDieScore score = CSpriteFishDieScore.getScore(mScene, mMassEntity.Position, total_score, 2);//待整理 } // 播放鱼死亡时触发的特效 foreach (var it in mVibFish.Effects) { int vib_compose_id = it.Id; if (vib_compose_id <= 0) { continue; } Dictionary <string, object> param = new Dictionary <string, object>(); param.Add("SourcePosition", mMassEntity.Position); param.Add("SourceAngle", 0f); param.Add("PlayerId", et_player_rpcid); CRenderTurret turret = mScene.getTurret(et_player_rpcid); if (turret != null) { param.Add("DestPosition", turret.getTurretPos()); } else { param.Add("DestPosition", mMassEntity.Position); } param.Add("IsFishDie", true); mScene.addEffect(vib_compose_id, param, EffectTypeEnum.Client); } // 处理SpriteFish mFishStopMove = true; if (mISpriteFish != null) { mISpriteFish.playDieAnimation(); } if (mVibFish.Red == TbDataFish.IsRed.YES) { mScene.getLevel().addRedFishPosition(mFishObjId, Position); } signDie(); }