Example #1
0
    private IEnumerator ShowAOE(List <BulletTarget> targetList, Vector3 position, ClientSkill skill)
    {
        if (skill.Prop.skill_select_type != Def.SkillSelectType.PlayerSelect)
        {
            StartCoroutine(UpdatePosition());
            CoroutineJoin join = new CoroutineJoin(AssetLoader.Instance);
            for (int i = 0; i < targetList.Count; i++)
            {
                BulletTarget bulletTarget = targetList[i];
                TeamDisplay  target       = bulletTarget.Target;
                if (target == null)
                {
                    continue;
                }
                join.StartSubtask(ShowHurtEffect(target, bulletTarget.delayFrame));
            }
            yield return(join.WaitForAll());
        }
        else
        {
            Global.ShowHurtEffect(null, HurtEffect_, position);
        }
        yield return(null);

        StartCoroutine(WaitAndDestroy(true, 2f));
    }
Example #2
0
    public void Reset(BulletTarget bTarget, BulletType bType)
    {
        this.bTarget = bTarget;
        this.bType   = bType;

        if (bType == BulletType.DEFAULT)
        {
            if (bTarget == BulletTarget.ENEMY)
            {
                //플레이어 총알임
                spriteRenderer.sprite = SpriteManager.Singletone.BULLET_00_PLAYER;
            }
            else
            {
                //적이 쏘는 총알이에요
                spriteRenderer.sprite = SpriteManager.Singletone.BULLET_00_ENEMY;
            }
        }
    }
Example #3
0
 /// <summary>
 /// 部件开火
 /// </summary>
 /// <param name="fireEvent"></param>
 /// <param name="part"></param>
 private void CastPartFire(proto.PartFireEvent fireEvent, Part part)
 {
     ShowCast(part);
     // 范围攻击,只生成一个子弹
     if (part.partType == SpellType.AOE)
     {
         List <BulletTarget> targetList = new List <BulletTarget>();
         for (int i = 0; i < fireEvent.fireinfo_size(); i++)
         {
             proto.PartFireInfo info   = fireEvent.fireinfo(i);
             TeamDisplay        target = BattleSceneDisplayManager.Instance.GetTeamDisplay(info.targetid);
             if (target == null)
             {
                 continue;
             }
             BulletTarget bulletTarget = new BulletTarget();
             bulletTarget.delayFrame = info.delayframe;
             bulletTarget.Target     = target;
             targetList.Add(bulletTarget);
         }
         ClientParts parts = Team_.GetPartsByID(part.partID);
         ShowBullet(parts, targetList, part.partType, part.attackPoint, part.bulletPath, part.hitEffect, Vector3.zero);
         return;
     }
     // 个体攻击,每个对象都生成子弹
     for (int i = 0; i < fireEvent.fireinfo_size(); i++)
     {
         proto.PartFireInfo info   = fireEvent.fireinfo(i);
         TeamDisplay        target = BattleSceneDisplayManager.Instance.GetTeamDisplay(info.targetid);
         if (target == null)
         {
             continue;
         }
         List <BulletTarget> targetList   = new List <BulletTarget>();
         BulletTarget        bulletTarget = new BulletTarget();
         bulletTarget.delayFrame = info.delayframe;
         bulletTarget.Target     = target;
         targetList.Add(bulletTarget);
         ClientParts parts = Team_.GetPartsByID(part.partID);
         ShowBullet(parts, targetList, part.partType, part.attackPoint, part.bulletPath, part.hitEffect, Vector3.zero);
     }
 }
Example #4
0
    public virtual void Fire(Vector3 position, float angle, float speed, int damage, BulletTarget target)
    {
        // 座標を設定
        this.transform.position = position;

        // 向きを設定
        this.angle = angle;
        Vector3 rot = this.transform.eulerAngles;

        rot.z = angle;
        this.transform.eulerAngles = rot;

        // 速度を設定
        this.speed = speed;

        // 敵味方どちらが対象かを設定
        this.target = target;

        this.damage = damage;
    }
Example #5
0
    private IEnumerator CastSkill(proto.UseSkill useSkill)
    {
        Skill skill = GetSkill(useSkill.partid);

        if (skill == null)
        {
            Debug.Log("skill is null");
            yield break;
        }
        ShowCast(skill);
        ClientSkill clientSkill = BattleSys.GetCommanderShip().GetSkillById(useSkill.skillid);

        // 范围攻击,只生成一个子弹
        if (skill.partType == SpellType.AOE)
        {
            List <BulletTarget> targetList = new List <BulletTarget>();
            for (int i = 0; i < useSkill.fireinfolist_size(); i++)
            {
                proto.PartFireInfo info   = useSkill.fireinfolist(i);
                TeamDisplay        target = BattleSceneDisplayManager.Instance.GetTeamDisplay(info.targetid);
                if (target == null)
                {
                    continue;
                }
                BulletTarget bulletTarget = new BulletTarget();
                bulletTarget.delayFrame = info.delayframe;
                bulletTarget.Target     = target;
                targetList.Add(bulletTarget);
            }
            ClientParts parts    = Team_.GetPartsByID(skill.partID);
            float       x        = (float)useSkill.posx / 10000f;
            float       y        = (float)useSkill.posy / 10000f;
            float       z        = (float)useSkill.posz / 10000f;
            Vector3     position = new Vector3(x, y, z);
            ShowBullet(parts, targetList, skill.partType, skill.attackPoint, skill.bulletPath, skill.hitEffect, position, clientSkill);
        }
        // 个体攻击,每个对象都生成子弹
        else
        {
            for (int i = 0; i < useSkill.fireinfolist_size(); i++)
            {
                proto.PartFireInfo info   = useSkill.fireinfolist(i);
                TeamDisplay        target = BattleSceneDisplayManager.Instance.GetTeamDisplay(info.targetid);
                if (target == null)
                {
                    continue;
                }
                List <BulletTarget> targetList   = new List <BulletTarget>();
                BulletTarget        bulletTarget = new BulletTarget();
                bulletTarget.delayFrame = info.delayframe;
                bulletTarget.Target     = target;
                targetList.Add(bulletTarget);
                ClientParts parts = Team_.GetPartsByID(skill.partID);
                ShowBullet(parts, targetList, skill.partType, skill.attackPoint, skill.bulletPath, skill.hitEffect, Vector3.zero, clientSkill);
            }
        }
        yield return(new WaitForSeconds(1.2f));

        for (int i = 0; i < SingEffectList_.Count; i++)
        {
            if (SingEffectList_[i] == null)
            {
                continue;
            }
            Destroy(SingEffectList_[i]);
        }
        SingEffectList_.Clear();
    }