반응형
Sprite Animation 구현 및 공에 중력 적용
공에 중력 적용및 튕기는 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | float THROW_FORCE_Y = -10.f; float THROW_FORCE_X = 10.f; constexpr float Gravity = 0.4f; //중력 void Ball::Update(float a_deltaTime, RECT a_pikachuColliderRect) { //화면경게선에 왔을때 튕기기(반대방향으로 전환) if (m_y <= 0) { THROW_FORCE_Y *= -1; } if (m_y >= GROUND) { THROW_FORCE_Y *= -1; } if (m_x <= 0) { THROW_FORCE_X *= -1; } if (m_x >= 800 - 42) { THROW_FORCE_X *= -1; } // 플레이어와 부딛혔을때 if (a_pikachuColliderRect.left <= m_x && a_pikachuColliderRect.right >= m_x && a_pikachuColliderRect.top <= m_y && a_pikachuColliderRect.bottom >= m_y) { THROW_FORCE_Y *= -1; THROW_FORCE_X *= -1; } //속도 줄어들기 if (THROW_FORCE_X > 0) { THROW_FORCE_X -= 0.01f; } if (THROW_FORCE_Y > 0) { THROW_FORCE_Y -= 0.1f; } m_y += (int)(THROW_FORCE_Y * a_deltaTime); m_x += (int)(THROW_FORCE_X * a_deltaTime); THROW_FORCE_Y += Gravity; //애니메이션 switch (m_AniState) { case Ball::Idle: m_Animations[Idle]->Update(a_deltaTime * (THROW_FORCE_X + THROW_FORCE_Y)); break; case Ball::Spiked: m_Animations[Spiked]->Update(a_deltaTime); break; default: break; } } | cs |
반응형
'develop-note' 카테고리의 다른 글
ImGUI 사용도중 마우스 위치가 안맞는 버그 (0) | 2021.01.06 |
---|---|
게임 루프, sleep 활용 (0) | 2020.07.31 |
WinAPI - WM_MOUSEMOVE, 마우스 position 가져오기 test (0) | 2020.05.06 |
Astar_GridMapTool (0) | 2020.04.24 |
Breadth First Search (너비 우선 탐색) 응용, 미로 탈출 (0) | 2020.03.26 |