Пример #1
0
    public void InitEnityByMonster(Monster monster)
    {
        this.monster = monster;
        enityType    = EnityType.Enemy;
        Animator animator = gameObject.GetComponent <Animator>();

        if (animator != null)
        {
            animatorList.Add(animator);
        }
        UpdateHeroEquips();

        OnPlayAnimation(animatorAction);
    }
Пример #2
0
    List <GameObject> GetGameObjectsByAttackTargetType(EnityType _attackType)
    {
        List <GameObject> targetList = new List <GameObject>();

        GameObject[] _gameObjects = GameObject.FindGameObjectsWithTag(_attackType.ToString());
        for (int i = 0; i < _gameObjects.Length; i++)
        {
            GameObject _gameObject = _gameObjects[i];
            float      distance    = Vector3.Distance(_gameObject.transform.position, transform.position);
            if (searchRadius > distance)
            {
                targetList.Add(_gameObject);
            }
        }
        //////////////////按照距离排序////////////////////////////
        return(targetList);
    }
Пример #3
0
    public GameObject CreateEnity(EnityType enityType, string enityName)
    {
        GameObject obj = DataManager.GetInstance().CreateGameObjectFromAssetsBundle("enemy", enityName);
        GameObject AI  = DataManager.GetInstance().CreateGameObjectFromAssetsBundle("enemy", "AI");

        obj.transform.SetParent(AI.transform, false);
        AIBase AIScript = AI.GetComponent <AIBase>();

        AIScript.selfType         = enityType;
        AIScript.attackType       = EnityType.Hero;
        AIScript.isCanMove        = true;
        AIScript.searchRadius     = 25.0f;
        AIScript.attackRadius     = 1.0f;
        AIScript.moveSpeed        = 0.05f;
        AIScript.moveAnimatorType = AnimatorAction.Walk;
        AIScript.animator         = obj.GetComponent <Animator>();
        AI.name = enityName + createEnityIndex;
        createEnityIndex++;
        return(AI);
    }
Пример #4
0
    public void InitAIBaseByEnity(Enity enity)
    {
        this.enity = enity;

        selfType         = enity.enityType;
        attackType       = EnityManager.GetInstance().GetAttackEnityType(selfType);
        isCanMove        = enity.enityType == EnityType.Hero;
        searchRadius     = DataManager.instance.GetConfigValueToFloat("fight_search_radius");
        moveSpeed        = DataManager.instance.GetConfigValueToFloat("fight_move_speed");
        moveAnimatorType = AnimatorAction.Run;
        animator         = enity.gameObject.GetComponent <Animator>();
        //////////////////////////判断是否装备武器///////////////////////////////////
        Item equip = enity.GetEnityEquip();

        if (equip != null)
        {
            aiWeapon = gameObject.AddComponent <AIWeapon>();
            aiWeapon.InitWeaponByEquip(equip);
        }
        isInit = true;
    }
Пример #5
0
    public void InitEnityByHero(Hero hero)
    {
        this.hero = hero;
        enityType = EnityType.Hero;
        foreach (KeyValuePair <HeroPart, int> part in hero.heroPartDic)
        {
            DIYTableData dIYTableData = DataManager.instance.GetDIYTableDatasById(part.Value);
            if (dIYTableData != null)
            {
                if (dIYTableData.dummyProp != -1)
                {
                    GameObject diyPrefab = DataManager.GetInstance().CreateGameObjectFromAssetsBundle("enemy", dIYTableData.prefab);
                    if (diyPrefab != null)
                    {
                        diyPrefab.transform.SetParent(dummyProp_Parent[(int)dIYTableData.dummyProp], false);
                    }
                }
                else
                {
                    Material            material            = DataManager.GetInstance().CreateMaterialFromAssetsBundle("enemy", dIYTableData.prefab);
                    SkinnedMeshRenderer skinnedMeshRenderer = materialBody.GetComponent <SkinnedMeshRenderer>();
                    if (skinnedMeshRenderer != null && material != null)
                    {
                        skinnedMeshRenderer.material = material;
                    }
                }
            }
        }
        Animator animator = gameObject.GetComponent <Animator>();

        if (animator != null)
        {
            animatorList.Add(animator);
        }
        UpdateHeroEquips();

        OnPlayAnimation(animatorAction);
    }
Пример #6
0
    public EnityType GetAttackEnityType(EnityType enityType)
    {
        EnityType attackEnityType = EnityType.NULL;

        switch (enityType)
        {
        case EnityType.Enemy:
            attackEnityType = EnityType.Hero;
            break;

        case EnityType.Hero:
            attackEnityType = EnityType.Enemy;
            break;

        case EnityType.Bomb:
            attackEnityType = EnityType.Enemy;
            break;

        default:
            break;
        }
        return(attackEnityType);
    }
Пример #7
0
 /// <summary>
 /// 获取当前场景内所有目标对象
 /// </summary>
 /// <param name="enemy"></param>
 /// <returns></returns>
 public int GetEnitysCountInGame(EnityType enemy)
 {
     EnitysInGame = GameObject.FindGameObjectsWithTag(enemy.ToString());//遍历找出所有怪物
     return(EnitysInGame.Length);
 }