1. 개발 현황

2. 금일 개발 내용

1. 도끼 무기 추가

1) RigidBody 2D 내 Gravity Scale 추가

2) 공격 방향 제어 로직 추가

    void FireAxe()
    {
        Vector3 dir;
        if(mShotCnt % 2 == 0)
        {
            dir.x = 1;
            dir.y = 2;
            dir.z = 0;
        }
        else
        {
            dir.x = -1;
            dir.y = 2;
            dir.z = 0;
        }
        dir = dir.normalized;
        // Debug.Log(dir);

        Transform bullet = mWeaponPool.Get().transform; // 부족한 것을 오브젝트 풀로 추가
        bullet.parent = mWeaponPool.transform;
        bullet.position = GameManager.instance.mPlayer.transform.position;
        bullet.rotation = Quaternion.FromToRotation(Vector3.up, dir);
        bullet.GetComponent<Range>().Init(Mathf.RoundToInt(GameManager.instance.mWeaponLastData[mId].Damage), GameManager.instance.mWeaponLastData[mId].Pierce, dir, GameManager.instance.mWeaponLastData[mId].Speed);
    }

2. 마늘 무기 추가

1) OnTriggerEnter2D 로직 추가

2) Coroutine 추가

    IEnumerator KnockBack()
    {
        //yield return null; // 1 프레임 쉬기
        //yield return new WaitForSeconds(2f); // 2초 쉬기
        yield return mWaitFixedFrame;

        Vector3 playerPos = GameManager.instance.mPlayer.transform.position;
        Vector3 dirVec = transform.position - playerPos;

        mRigid.AddForce(dirVec.normalized * mKnockBackForce, ForceMode2D.Impulse);
    }

    IEnumerator HitGalic()
    {
        yield return mWaitFixedFrame;

        mHealth -= mGarlicDamage;

        if (mHealth > 0)
        {
            StartCoroutine(KnockBack());
            mAnim.SetTrigger("Hit");
        }
        else
        {
            mIsLive = false;
            mIsGarlic = false;
            mColl.enabled = false;
            mRigid.simulated = false;
            mSpriter.sortingOrder = 1;
            mAnim.SetBool("Dead", true);
            GameManager.instance.mPlayerData.Kill++;
            GameManager.instance.GetExp(mDropExp);
        }
    }

3) 범위 제어 옵션 추가

melee.localScale = Vector3.one * GameManager.instance.mWeaponLastData[mId].ProjectileSize;

3. HUD 프리팹 추가

1) 목적: Item 추가에 따른 확장 가능성을 키우기 위함

2) 적용방안:

- Json 데이터 개수에 따라 GameObject 배열 크기 가변

    public GameObject mRootHUD;
    GameObject[] mItems;
    void Awake()
    {
        mRect = GetComponent<RectTransform>();
        mItems = new GameObject[GameManager.instance.mWeaponJsonData.Length + GameManager.instance.mPerkJsonData.Length];
        mItems[0] = mRootHUD;
        for (int i = 1; i < mItems.Length; ++i)
        {
            mItems[i] = Instantiate(mRootHUD);
            mItems[i].GetComponent<HUDItem>().mId = i;
            mItems[i].transform.SetParent(mRootHUD.transform.parent);
            mItems[i].transform.name = "Item " + i;
            mItems[i].transform.localScale = mRootHUD.transform.localScale;
        }    
    }

3. TODO

1. 무기 구현

1) 거미줄 공격

2) 폭발형 공격

3) 원거리 폭발형 공격

2. 캐릭터 구현

3. 골드 및 경험치 드롭 구현

4. 필드 장애물 구현

5. 필드 드롭 아이템 구현

6. 필드 이벤트 구현

+ Recent posts