Esempio n. 1
0
    void DamageLogic(EntityBase entity)
    {
        CollisionComponent cc  = entity.GetComp <CollisionComponent>();
        FlyObjectComponent fc  = entity.GetComp <FlyObjectComponent>();
        CampComponent      acc = entity.GetComp <CampComponent>();

        if (cc.CollisionList.Count > 0)
        {
            for (int i = 0; i < cc.CollisionList.Count; i++)
            {
                if (cc.CollisionList[i].GetExistComp <LifeComponent>() &&
                    cc.CollisionList[i].GetExistComp <CampComponent>() &&
                    acc.creater != cc.CollisionList[i].GetComp <CampComponent>().creater)
                {
                    //Debug.Log("fly DamageLogic frame-> " + m_world.FrameCount + "  id " + cc.CollisionList[i].ID + " Fly ID " + entity.ID);
                    if (!fc.damageList.Contains(cc.CollisionList[i].ID)) //第一次伤害
                    {
                        SkillUtils.FlyDamageLogic(m_world, entity, cc.CollisionList[i]);
                        fc.damageList.Add(cc.CollisionList[i].ID);
                    }


                    //不能穿人销毁飞行物
                    if (!fc.FlyData.m_AcrossEnemy)
                    {
                        m_world.ClientDestroyEntity(entity.ID);
                    }

                    //Debug.Log("fc.FlyData.m_AcrossEnemy " + fc.FlyData.m_AcrossEnemy);
                }

                if (cc.CollisionList[i].GetExistComp <BlockComponent>())
                {
                    //不能穿墙摧毁飞行物
                    if (fc.FlyData.m_CollisionTrigger)
                    {
                        m_world.ClientDestroyEntity(entity.ID);
                    }
                }
            }
        }
    }