오늘의 학습 키워드

Sin, Cos

 

공부한 내용

쇠스랑 무기 구현

쇠스랑 무기는

1. 마우스의 위치로 바라보는 방향이 정해지며

2. 그 방향대로 직선으로 갔다가 돌아오는 움직임으로 구현하도록 했다.

마우스 위치에서 내 위치에를 뺀 targetRot을 구해 transform.up = targetRot에서 바라보는 방향을 정해주고

첫 번째 while에서 마우스 위치로 가는 것, 두 번째 while에서 offset위치로 돌아오도록 만들었다.

protected override IEnumerator Move()
    {
        Vector2 targetPos = _mainCam.ScreenToWorldPoint(Input.mousePosition);
        float harfDuration = movingDuration * 0.5f;
        float elapsedTime = 0f;
        float normalizedRatio = 0f;
        Vector2 targetRot = (targetPos - (Vector2)transform.position).normalized;

        transform.up = targetRot;

        while (elapsedTime < harfDuration)
        {
            elapsedTime += Time.deltaTime;
            normalizedRatio = elapsedTime / harfDuration;
            transform.position = Vector2.Lerp(transform.position, targetPos, normalizedRatio);
            yield return null;
        }

        elapsedTime = 0f;

        while (elapsedTime < harfDuration)
        {
            elapsedTime += Time.deltaTime;
            normalizedRatio = elapsedTime / harfDuration;
            transform.position = Vector2.Lerp(transform.position, offsetTransform.position, normalizedRatio);
            yield return null;
        }

        StartCoroutine(Move());
    }

 

 

낫 무기 구현

낫 무기는

1. 캐릭터를 중심으로 원형으로 돌며

2. 자신을 중심으로 원형으로 회전하도록 구현하도록 했다.

transform.rotation에 Quaternion.Euler로 자기 자신의 회전을 정해주고

단위원에서의 삼각함수를 이용해 x,y의 위치를 정해주었다.

protected override IEnumerator Move()
    {
        transform.rotation = Quaternion.Euler(0, 0, -currentAngle);

        if (currentAngle < 360f)
        {
            float xPos = Mathf.Sin(currentAngle * Mathf.Deg2Rad);
            float yPos = Mathf.Cos(currentAngle * Mathf.Deg2Rad);

            transform.position = new Vector2(xPos, yPos) * radius;
            currentAngle += Time.deltaTime * moveSpeed;

            yield return null;
        }
        else
            currentAngle = 0f;

        StartCoroutine(Move());
    }

 

결과

 

 

오늘의 회고

 오늘은 무기 공격 방식과 업그레이드 부분을 구현했다. 다음에는 실제 몬스터에게 데미지를 입힐 수 있도록 Collider 충돌 로직을 구현해야겠다. 연휴라도 짬짬이 시간을 내서 씬을 합치는 날인 월요일까지 맡은 부분을 완성할 수 있도록 해야겠다. 월요일까지 화이팅!

+ Recent posts