[unity] 유니티 게임 따라 만들기3-4 (맵구현, 팔구현)

김동민·2021년 9월 30일
0
post-thumbnail

https://youtu.be/uandR5M30ho [유튜버: 케이디]님의 유니티 3D강좌 영상을 보고 따라하면서 유니티 공부용으로 제작한 게임입니다.

유니티의 지형만들기 기능을 사용해서 간단한 굴곡이 있고 언덕이 있는 산맥을 만들어 주었다.


영상을 따라서 아무것도 들고 있지 않은 상태의 팔과 자연스러운 위치 값을 조절하고 Holder,HandHolder와 WeaponCamera를 만들어서 넣어 주었다.

아무것도 들고 있이 않을 때의 손의 애니메이션을 조작하는 명령이다.

중간 중간에 카메라의 시점이나 Holder폴더를 만들어서 자연스러운 카메라 동작과 시점들을 이어주기 위해 영상을 따라 수정을 거쳤는데 여기부분이 물리적인 법칙같은 것들을 이해하고 넘어가느라 시간이 오래걸렸다.

    private void TryAttack()
    {
        if (Input.GetButton("Fire1"))
        {
            if (!isAttack)
            {
                StartCoroutine(AttackCoroutine());
            }
        }
    }

마우스 왼쪽 클릭을 누르면 공격을 하고 AttackCoroutine()을 실행한다.

    IEnumerator AttackCoroutine()
    {
        isAttack = true;
        currentHand.anim.SetTrigger("Attack");

        yield return new WaitForSeconds(currentHand.attackDelayA);
        isSwing = true;

        StartCoroutine(HitCoroutine());

        yield return new WaitForSeconds(currentHand.attackDelayB);
        isSwing = false;


        yield return new WaitForSeconds(currentHand.attackDelay - currentHand.attackDelayA - currentHand.attackDelayB);
        isAttack = false;
        }

주먹을 휘두르는 공격상태와 다음 동작으로 이뤄지는 딜레이와 공격을 하는지 않하는지 확인해주는 과정을 거친다.

    IEnumerator HitCoroutine()
    {
        while (isSwing)
        {
            if (CheckObject())
            {
                isSwing = false;
                Debug.Log(hitInfo.transform.name);
            }
            yield return null;
        }
    }
    private bool CheckObject()
    {
        if(Physics.Raycast(transform.position, transform.forward, out hitInfo, currentHand.range)){
            return true;
        }
        return false;
    }

}

오브젝트와 충돌하면 어떤 오브젝트와 충돌했는지 확인해주는 로그를 띄워주는 명령이다.

이렇게 3-4강의를 따라하여 맵과 맨주먹을 휘두르는 동작들의 애니메이션을 관리해주는 작업을 해보았다.

profile
상상을 현실로 만들어내는 것이 즐겁습니다. 새로운 지식을 학습하고 기존의 지식들이 변화하는 과정들이 즐겁습니다. 개발의 과정은 개발자의 편의를 고려하고 결과는 사용자의 편의를 고려합니다.

1개의 댓글

comment-user-thumbnail
2022년 6월 3일

혹시 팔 에셋 어디서 구하는지 아시나요?

답글 달기