Ejemplo n.º 1
0
    void OnTriggerEnter(Collider collider)
    {
        Transform           colliderTransform = collider.transform;
        AttackNpcController controller        = colliderTransform.GetComponent <AttackNpcController>();

        if (controller != null)
        {
            controller.CantAttack   = 0;
            controller.CantbeAttack = 0;
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 创建AttackNpc;
    /// </summary>
    /// <returns></returns>
    public void CreateAttackNpc(AttackNpcSpawnData spawnData)
    {
        if (spawnData == null)
        {
            return;
        }

        AttackNpcData attackNpcData = DataManager.s_AttackNpcDataManager.GetData(spawnData.AttackNpcID);

        if (attackNpcData == null)
        {
            return;
        }

        AttackNpc  attackNpc = m_AttackNpcDic [spawnData.ID];
        Quaternion rotate    = Quaternion.Euler(new Vector3(0, spawnData.Orient * Mathf.Rad2Deg, 0));
        GameObject prefab    = ResourcesManager.Instance.LoadUnitObject(attackNpcData.Model, UNIT_TYPE.ATTACK_NPC);
        GameObject npcobj    = GameObject.Instantiate(prefab) as GameObject;

        npcobj.transform.position = spawnData.Position;
        npcobj.transform.rotation = rotate;

        UnityEngine.AI.NavMeshAgent agent = npcobj.AddComponent <UnityEngine.AI.NavMeshAgent> ();
        agent.speed        = 0;
        agent.acceleration = 0;
        agent.angularSpeed = 0;
        //agent.avoidancePriority =
        agent.height           = attackNpcData.Height;
        agent.radius           = attackNpcData.Radius;
        agent.stoppingDistance = 0.5f;

        CharacterController collider = npcobj.AddComponent <CharacterController> ();

        collider.height = attackNpcData.Height;
        collider.radius = attackNpcData.Radius;
        collider.center = Vector3.up * Mathf.Max(collider.height / 2.0f, collider.radius);
        npcobj.SetLayerRecursively(LayerMask.NameToLayer("AttackNpc"));

        AttackNpcController controller = npcobj.AddComponent <AttackNpcController> ();

        m_AttackNpcControllerDic.Add(spawnData.ID, controller);
        controller.CurCombatUnit = attackNpc;
        controller.PatrolRadius  = spawnData.PatrolRadius;
    }