TIL

김흥식·2025년 5월 13일

팀 프로젝트 마무리 단계

  1. 오늘 공부한 내용:
    큰 주제로 팀 포르젝트 마무리 단계로 잡은 이유가 딱 지금 저말 그대로다 오늘은 최정적으로 합치는 과정과 추가 필요한 애니메이션이라든지 추가 기능구현? 이렇것들 위주로 한거같다!
    오늘의 기능 추가!!
    두둥..
    더블 점프 만들기!!
    1.플레어어(Cat) 오브젝트안에 자식으로 빈오브젝트 만들기
    2.빈프로젝트 이름은 GroundCheck 위치는 플레이어 캐릭터 발 아래로 넣기
    3.GroundCheck 오브젝트를 플레이어 안에있는 groudCheck변수에 드래그해서 연결
    4.Layer를 Ground로 설정
    기본 순거는 이렇게 잡았고 그러고 나서 코드를 추가하였다 같이 코드를 한번 보자!
    public float jumpForce = 5f; // 점프 힘
    public Transform groundCheck; // 바닥 체크를 위한 트랜스폼
    public LayerMask groundLayer; // 바닥 레이어
    public int maxJumpCount = 2; // 최대 점프 횟수 private int jumpCount; // 현재 점프 횟수
    private bool isGrounded; // 바닥에 닿아 있는지 여부

자 일단 기본 플레이어 컨트롤러 스크립트 안에서 없었던 점프변수 선언을 해주면서 바닥에 닿을때 반응이 있어야하다보니 바닥,최대점프횟수 다 등등 선언을 해주었다 그리고 나서 점프 횟수나 바닥에 닿았는지도 선언해줬다!

그리고 나서
void Jump()
{
rb.velocity = new Vector2(rb.velocity.x, 0); // y속도 초기화
rb.AddForce(Vector2.up * jumpForce, ForceMode2D.Impulse);
jumpCount++;
}

점프 함수 선언해주었고
private void FixedUpdate()
{
bool wasGrounded = isGrounded; // 이전 바닥 접촉 상태 저장
isGrounded = Physics2D.OverlapCircle(groundCheck.position, 0.1f, groundLayer); // 바닥 체크

    if (isGrounded && !wasGrounded) // 바닥에 닿았을 때
    {
        jumpCount = 0; // 점프 횟수 초기화
    }   
    // 수평 방향으로만 이동
    rb.velocity = new Vector2(currentSpeed, rb.velocity.y);

픽셀업데이트 문안에 바닥접촉이라든지 닿았을때 점프 ㄹ횟수 초기화까지 만들어주었따

그리고 마지막에
void Update()
{
if (Input.GetKeyDown(KeyCode.Space) && jumpCount < maxJumpCount)
{
Jump();
}
}
업데이트 문에 이렇게 점프를 넣어주면 실행이 된다!

이거까지는 쉬웠고
사실 내가 가장 공부하면 어렵다 느꼈던게.. 애니메이션은 만들고 실행하는 거였다.. 그래도 생각보다 계속 찾아보면서 공부를 하다보니 잘 작동하는걸 보고 모든 부딫혀봐야지 되는구나 싶더라.. 그래도 정확하게 더 빠르게 하려면 애니메이션 실행은 필요한것같다..

이 부분 이외에도 대쉬 아이템을 먹었을때 반짝이는 효과를 주기위해 코드를 만들었다.
그러기위해서는 일단 반짝이는 코드를 먼저 만들어야한다 밑에 처럼 만들었따

private IEnumerator DashFlashEffect()
{
if (spriteTransform == null)
yield break;

    SpriteRenderer sr = spriteTransform.GetComponent<SpriteRenderer>();
    if (sr == null)
        yield break;

    float flashInterval = 0.1f;    // 반짝이는 간격
    float elapsed = 0f;

    while (elapsed < isInvincibleTime)
    {
        sr.color = new Color(1f, 1f, 1f, 0.5f); // 반투명하게
        yield return new WaitForSeconds(flashInterval);

        sr.color = new Color(1f, 1f, 1f, 1f);   // 원래 색상
        yield return new WaitForSeconds(flashInterval);

        elapsed += flashInterval * 2;
    }

    sr.color = new Color(1f, 1f, 1f, 1f); // 효과 끝나면 정상 복원
}

이렇게 만들었다 그리고 나서 중요한게 이제 버프츄르코루틴안에
StartCoroutine(DashFlashEffect()); // 반짝이는 효과 코루틴 실행
이 문장 하나만 넣어주면
아주 이쁘게 반짝이는 상태가 되었다! 아주 나이스하다..

  1. 공부하면서 어려웠던 내용:
    애니메이션 부분이다 사실 bool 값이나 Tirgger값이나 int값이 이것저것넣는데 뭘 넣어야하는지 잘몰랐는데.. 내가 어떤 애니메이션인지에 따라 값이 달란다고 해서 그렇구나 했지만 사실..? 100% 이해했다고는 말할 수 없긴하다..

해결방안 : 결론!! 그냥 주구장장 애니메이션을 구현해봐야겠다!

  1. 오늘 공부하면서 느낀점 :

내가 코딩을 조금씩하다보니 욕심이 너무 많이 생기더라.. 분명 처음에 시작할때는 그냥 아 기본필수만 해보자라는 생각이였는데 하다보니 이것도 구현하고 싶어지고 저것도 구현하고 싶어지고 막 그러더라 이래서 사람들이 계속 기획을 하는구나 싶더라 ㅋㅋㅋ 나는기획자가 맞나보다 근데 그러다보니 내가 지금 이렇게 개발을 배우는게 너무 좋고 그냥 1인개발해버려? 라는 생각까지 들더라 ㅋㅋㅋ 근데 아직 부족하니깐 더 열심히 하자라는 마음가짐이 더 생긴 것 같다!

  1. 내일 공부 할 것
    진짜 마무리 깃허브 머지하고 트러블슈팅 작성하고 마무리만 잘하면 될꺼같다~
    (요건 우리 게임의 주인공 고양이다)
profile
열심히 해보자!

0개의 댓글