/// <summary> /// 유닛을 필드에 오브젝트로 생성시키는 함수 /// 생성하면서 이벤트 콜벡을 할당해줘야 한다. /// </summary> /// <param name="unit"></param> public static void MakeUnitObject(Unit unit) { // 미리 존재 여부 확인 if (UnitObjects.ContainsKey(unit) == true) { Debug.LogError($"이미 필드에 유닛({unit.Name}) 오브젝트가 존재합니다."); return; } // 게임 오브젝트 생성 GameObject newObj = new GameObject(unit.Name); // 위치 지정 newObj.transform.position = new Vector3(unit.Position.x, unit.Position.y, 0); // 박스 콜라이더 컴포넌트 추가 BoxCollider2D boxCollider2D = newObj.AddComponent <BoxCollider2D>(); boxCollider2D.size = new Vector2(1, 1); // 이벤트 트리거 컴포넌트 추가 EventTrigger eventTrigger = newObj.AddComponent <EventTrigger>(); GameObject imgObj = new GameObject("image"); imgObj.transform.SetParent(newObj.transform); // 스프라이터 랜더러 추가 SpriteRenderer spriteRenderer = imgObj.AddComponent <SpriteRenderer>(); spriteRenderer.sprite = unit.Sprite; // 애니메이터 추가 Animator animator = imgObj.AddComponent <Animator>(); animator.runtimeAnimatorController = instance.animatorController; UnitObjects.Add(unit, newObj); // HP 바 생성 GameObject hpBarObj = Instantiate(instance.hPBarPrefab, MainPanel.transform); hpBarObj.transform.SetAsFirstSibling(); HPBar newHPBar = hpBarObj.GetComponent <HPBar>(); newHPBar.Init(unit); HPBars.Add(UnitObjects[unit].transform, newHPBar); //유닛 오브젝트 상호작용 콜백 등록 unit.OnPosition.after.AddListener(MoveObject); unit.OnCurHP.after.AddListener(newHPBar.SetValue); //최초 갱신 //newHPBar.SetValue(unit.CurHP); int tempHP = unit.CurHP; Vector2Int tempPosition = unit.Position; unit.OnPosition.after.Invoke(tempPosition); unit.OnCurHP.after.Invoke(tempHP); }
public void Start() { HP = maxHP; hpbar = transform.GetComponentInChildren <HPBar>(); hpbar.Init(maxHP, HP); buffs = new List <Buff>(); SetAutoTarget(this); StartCoroutine(FSM()); }
private void OnEnable() { attackMonster.Clear(); //havingMonster.Clear(); hp = maxHp; hpBar.Init(); hpBar.gameObject.SetActive(false); prePos = this.transform.position; heroState = HeroState.Idle; NextState(); }
void InitCommon(CharacterContainer character_container, float attack_next_time, GameObject hpBarPrefab, GameObject skillPrefab) { InitContainer(character_container); HPBar = (GameObject.Instantiate(hpBarPrefab) as GameObject).GetComponent <CharacterHPBar>(); HPBar.transform.SetParent(BattleBase.Instance.HPBarCanvas.transform, false); HPBar.Init(this, IsTeam == false, Scale); SkillName = (GameObject.Instantiate(skillPrefab) as GameObject).GetComponent <CharacterSkill>(); SkillName.transform.SetParent(BattleBase.Instance.CharacterSkillCanvas.transform, false); SkillName.Init(Character.transform, IsTeam); Skills = new List <BattleSkill>(); Buffs = new List <Buff>(); Restart(attack_next_time); }
protected virtual void OnEnable() { //attackMonster.Clear(); if (inGameMgr == null) { inGameMgr = InGameManager.instance; } if (resourceMgr == null) { resourceMgr = ResourceManager.instance; } hero = inGameMgr.hero; hp = maxHp; hpBar.Init(); hpBar.gameObject.SetActive(false); //initPos = this.transform.position; monsterState = MonsterState.Idle; }