private void _onHitCallBack() { // callback data 保证只触发一次, 要么是在回调的时候,要么是在被打断的时候在destory if (callbackData != null && callbackData.Caster != null && callbackData.Target != null) { //Debug.Log("Renderer Forward at frame: " + Launch.battleplayer._battle.Frame + " time : " + System.Environment.TickCount ); var data = SkillAttackFlyAttributeConfig.GetSkillAttackFlyAttribute(callbackData.Caster.AttackSkillAttackId); if (!data.IsFly) { // 只有击中 AttackEffectHit hitEffect = new AttackEffectHit(); hitEffect.EffectPrefabName = data.HitEffectName; hitEffect.Caster = callbackData.Caster; hitEffect.Target = callbackData.Target; hitEffect.Init(); callbackData.Target.attackEffectList.Add(hitEffect); } else { // 飞行击中 AttackEffectStraightLine attackEffect = new AttackEffectStraightLine(); attackEffect.HitEffectPrefabName = data.HitEffectName; attackEffect.FlyEffectPrefabName = data.FlyEffectName; attackEffect.Caster = callbackData.Caster; attackEffect.Target = callbackData.Target; attackEffect.Speed = data.Speed; attackEffect.Init(); callbackData.Target.attackEffectList.Add(attackEffect); } callbackData.Destroy(); callbackData = null; } }
public override bool Tick(float dt) { if (current_fly_time < total_fly_time) { _instanceFly.transform.position = start_position + (Target.Position - start_position) * current_fly_time / total_fly_time; //Debug.Log("current postion in tick " + _instanceFly.transform.position); current_fly_time += dt; return(false); } else { //Debug.Log("Renderer Attack Effect at frame: " + Launch.battleplayer._battle.Frame + " time : " + System.Environment.TickCount ); _instanceFly.transform.position = Target.Position; //GameObject.Destroy(_instanceFly); ActorMananger.Instance().RecycleGameObjectInstance("Effect/" + FlyEffectPrefabName, _instanceFly); _instanceFly = null; // 只有击中 AttackEffectHit hitEffect = new AttackEffectHit(); hitEffect.EffectPrefabName = HitEffectPrefabName; hitEffect.Caster = Caster; hitEffect.Target = Target; hitEffect.Init(); Target.attackEffectList.Add(hitEffect); return(true); } }