예제 #1
0
    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;
        }
    }
예제 #2
0
    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);
        }
    }