Skip to content

LeeHataeg/TeamProjectA02

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

TeamProjectA02

header

유니티 심화 주차 팀 프로젝트

  • A02조 이하택 임현진 정재호 함영주

🖥 프로젝트 소개


🕰 프로젝트 기간 : 2023.10.13 ~ 2023.10.20

✅ 개발 환경

Unity 2022.3.2f -해상도 : 1980 * 1280

✅제작 과정

  • 기획

와이어 프레임
팀 노션


✅ 게임 소개

🐈‍⬛ 게임명 : Hataeg, Attack!!

  • 우리들의 깜찍한 고양이가 적(인간)들을 피해 아기 고양이를 구출 하는 여정의 플랫포머 2D 게임

게임 화면

  • 구현 사항
    • 고양이 데미지

      고양이_데미지

    • 적 처치

      고양이_처치

    • 맵 전환

      고양이_맵 전환

    • 게임 끝

      고양이_도착




이하택님

  • Player 기능 담당

  • 1차 시도 : "StateMachine으로 구현하자"

    • 본강의를 참고하려 했으나, 3D캐릭터 움직임에 대한 State와 2D 플랫포머 캐릭터의 State의 차이를 메꾸지 못하고 시간을 소비했다.
  • 결론 : 플레이어가 필요한 분이 많아 업데이트로 키 입력 확인하도록 프로토타입을 만들어 전해주었는데, 변경할 시간이 없었다....

private void Update()
{
    Debug.DrawRay(new Vector3(transform.position.x, transform.position.y, transform.position.z), Vector2.down * 0.8f);
    //Jump
    if (Input.GetButtonDown("Jump") && !anim.GetBool("IsJump"))
    {
        rigid.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
        anim.SetBool("IsJump", true);
    }

    //Stop Speed
    if (Input.GetButtonUp("Horizontal"))
    {
        rigid.velocity = new Vector2(rigid.velocity.normalized.x * 0.5f, rigid.velocity.y);
    }

    //Direction Sprite
    if (Input.GetButtonDown("Horizontal"))
    {
        spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
    }

    //
    if (rigid.velocity.normalized.x == 0)
    {
        anim.SetBool("IsWalk", false);
    }
    else
    {
        anim.SetBool("IsWalk", false);
        anim.SetBool("IsWalk", true);
    }
    Respawn();
}



정재호님

  • 아이템 기능 담당

image

  • 아이템을 맵에 배치하여 Player태그와 충돌 시 Active 설정을 변경하도록 한다.

  • 각 아이템은 속도, 자석효과 등이 있다. 아이템 - 자석

//........

#region Player Speed Up
    public void IncreaseSpeed(float currentRunningTime, float runningMultipleValue)
    {
        float changeSpeed = originSpeed * runningMultipleValue;
        print(changeSpeed);

        maxSpeed = changeSpeed;
        // 증가한 속도를 원래 속도로 되돌리기 위한 코루틴 시작
        StartCoroutine(ResetSpeedAfterTime(currentRunningTime, originSpeed));
    }
    private IEnumerator ResetSpeedAfterTime(float currentRunningTime, float originalSpeed)
    {
        yield return new WaitForSeconds(currentRunningTime);
        print(currentRunningTime);
        // currentRunninTime 이후 원래 속도로 돌아감
        maxSpeed = originalSpeed;
    }
    #endregion

    #region Player Magnet Effect
    public void MagneticEffect()
    {
        if (!isMagneticActive)
        {
            StartCoroutine(ApplyMagneticEffectContinuously());
        }
    }

    private IEnumerator ApplyMagneticEffectContinuously()
    {
        isMagneticActive = true;
        float time = 0;

        while (isMagneticActive)
        {
            // 플레이어의 위치
            Vector2 playerPosition = transform.position;

            // 모든 ItemData 오브젝트를 찾음
            ItemData[] itemsInScene = FindObjectsOfType<ItemData>();

            foreach (ItemData item in itemsInScene)
            {
                // 아이템과 플레이어 사이의 거리를 계산
                float distanceToPlayer = Vector2.Distance(playerPosition, item.transform.position);

                // 만약 아이템이 자석 효과 범위 내에 있다면
                if (distanceToPlayer <= magnetRange)
                {
                    // 자석 효과 방향을 계산
                    Vector2 forceDirection = (playerPosition - (Vector2)item.transform.position).normalized;

                    // 아이템에 자석 효과를 적용
                    Rigidbody2D itemRigidbody = item.GetComponent<Rigidbody2D>();
                    if (itemRigidbody != null)
                    {
                        itemRigidbody.AddForce(magnetPower * forceDirection, ForceMode2D.Force);
                    }
                }
            }

            time += Time.deltaTime;

            yield return null;

            if (time > magnetTime)
            {
                isMagneticActive = false;
                yield break;
            }
        }
    }
    #endregion



함영주님

  • 맵 기능 담당
  • 타일맵 : 애니매이티드 타일, 움직이는 플랫폼, 물 플랫폼, 스프링 타일
  • 타이머 : 타임어택



임현진님

  • 적 기능 담당



About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •