자 일단 기본 플레이어 컨트롤러 스크립트 안에서 없었던 점프변수 선언을 해주면서 바닥에 닿을때 반응이 있어야하다보니 바닥,최대점프횟수 다 등등 선언을 해주었다 그리고 나서 점프 횟수나 바닥에 닿았는지도 선언해줬다!
그리고 나서
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인개발해버려? 라는 생각까지 들더라 ㅋㅋㅋ 근데 아직 부족하니깐 더 열심히 하자라는 마음가짐이 더 생긴 것 같다!
