public void playDamageSoundAndEffect(int attackerUniqueId, bool useHitEffect = true, string soundId = null, string effectId = HIT_STRIKE_EFFECT, bool useCharacterSizeEffect = true, bool useCustomPos = false, float posX = 0.0f, float posY = 0.0f, float posZ = 0.0f, bool useRoration = false) { #if UNITY_EDITOR if (BattleSimulator.nowSimulation && BattleSimulator.instance.skipTime > 0) { return; } #endif if (GameManager.me.recordMode == GameManager.RecordMode.continueGame) { return; } if (useCustomPos) { _v.x = posX; _v.y = posY; _v.z = posZ; } else { _v = cTransformPosition; _v.y += hitObject.height * 0.5f; _v.z -= 5.0f; //hitObject.distance * 0.5f; } if (soundId != null) { SoundData.play(soundId); } //GameManager.soundManager.playEffect("critical"); if (isPlayer) { SoundData.playDamageSound(monsterData.resource, playerData.characterId); } if (useHitEffect) { if (string.IsNullOrEmpty(effectId) == false) { if (_useEffectRecords.ContainsKey(effectId) == false) { _useEffectRecords.Add(effectId, Time.realtimeSinceStartup); } else { if (_useEffectRecords[effectId] + 0.3f > Time.realtimeSinceStartup) { return; } _useEffectRecords[effectId] = Time.realtimeSinceStartup; } if (useCharacterSizeEffect) { if (useRoration) { GameManager.info.effectData[effectId].getParticleEffectByCharacterSize(attackerUniqueId, this).tf.localRotation = tf.localRotation; } else { GameManager.info.effectData[effectId].getParticleEffectByCharacterSize(attackerUniqueId, this); } } else { if (useRoration) { GameManager.info.effectData[effectId].getEffect(attackerUniqueId, _v, null, null).transform.localRotation = tf.localRotation; } else { GameManager.info.effectData[effectId].getEffect(attackerUniqueId, _v, null, null); } } } } }