示例#1
0
    private void LoadFence(int number)
    {
        var fence_id            = DataManager.GetInstance().dicFencePositionData[number].fence_id;
        var fence_position_data = DataManager.GetInstance().dicFencePositionData[number];
        var data = DataManager.GetInstance().dicFenceData[fence_id];

        UnityEngine.Object prefab = (from obj in App.instance.resource
                                     where obj.name == data.prefab_name
                                     select obj).FirstOrDefault();
        GameObject go = (GameObject)Instantiate(prefab);

        go.transform.SetParent(go.transform, false);
        go.transform.position = new Vector3(fence_position_data.x, fence_position_data.y, fence_position_data.z);
        TestFence fence = go.AddComponent <TestFence>();

        fence.Init(data);
        this.fence = fence;

        this.fence.OnChangeFenceHp = (percentage) =>
        {
            Debug.Log($"OnChangeFenceHp:{percentage}");
            uI_FenceHp.ChangeFillAmount(percentage);
        };

        fence.OnMonsterRange = (gameObject) =>
        {
            if (gameObject != null && gameObject.tag == "Monster")
            {
                gameObject.GetComponent <TestMonster>().ChangeBehavior(TestMonster.eMonsterState.ATTACK);
            }
        };
    }
    public void Init(Vector3 navDestination, DefenseMonsterData data, TestFence fence, Material mat)
    {
        this.navDestination = navDestination;

        this.data          = data;
        this.hp            = data.maxHp;
        this.fence         = fence;
        this.whiteMaterial = mat;

        if (monsterAttackEvent == null)
        {
            this.monsterAttackEvent = this.gameObject.transform.GetChild(0).gameObject.AddComponent <MonsterAttackEvent>();
        }

        this.isTargetedByBomber = false;

        if (model == null)
        {
            this.model = this.transform.GetChild(0).gameObject;
        }
        this.model.transform.localPosition = Vector3.zero;

        if (agent == null)
        {
            this.agent = this.gameObject.AddComponent <NavMeshAgent>();
        }
        if (animator == null)
        {
            this.animator = this.gameObject.GetComponentInChildren <Animator>();
        }
        if (boxCollider == null)
        {
            this.boxCollider           = this.gameObject.AddComponent <BoxCollider>();
            this.boxCollider.size      = new Vector3(1, 3, 1);
            this.boxCollider.center    = new Vector3(0, 1.2f, 0);
            this.boxCollider.isTrigger = true;
        }
        this.gameObject.layer = LayerMask.NameToLayer("Monster"); //레이어를 몬스터로

        this.skinnedMeshRenderer = this.gameObject.GetComponentInChildren <SkinnedMeshRenderer>();
        this.defaultMaterial     = this.skinnedMeshRenderer.material;

        this.CheckHp();
    }