1. 반사 오브젝트
위의 영상에서 첫번째로 나오는 빨강색 오브젝트에요
오브젝트의 반사를 구현하려면, 예를들어 오브젝트의 화면 왼쪽(x=0인 지점)에서의 반사를 구현하려면
오브젝트의 현재 좌표가 x보다 작을때, 오브젝트의 x축에서의 속도인 vx에 -1을 곱하고
동시에 오브젝트의 현재 x좌표를 (x=0)축 기준으로 수직이동시키면 되요
그리고 이때 수직이동의 공식은, a를 축으로 b를 수직이동시킨다면, 그 값은 2*a-b가 되요,
즉, 오브젝트의 현재 x좌표를 b라고 하면 x=0인 축 기준으로 수직이동 시킨 x좌표는 2*0-b가 되는거에요
마찬가지로 화면 오른쪽 지점(x=544)에서의 반사를 구현하려면
마찬가지로 vx에 -1을 곱하고, 오브젝트의 x좌표를 2*544-b로 이동시키면 되요, b가 수직이동시킬 오브젝트의 x좌표에요
그리고 화면 위쪽 지점(y=0)에서의 반사를 구현하려면
y축 속도인 vy에 -1을 곱하고, 오브젝트의 y좌표를 2*0-b로 이동시키면 되요, b가 수직이동시킬 오브젝트의 y좌표에요
2. 중력 오브젝트
위의 영상에서 두번째로 나오는 주황색 오브젝트에요
오브젝트의 화면 아래쪽 방향의 중력을 구현하려면, 오브젝트의 x축 속도인 vx는 그대로 유지하고, 오브젝트의 y축 방향의 속도인 vy만, 일정 값이 될때가지 서서히 증가시키면 되요,
위의 영상에서는 vy가 4보다 작으면 0.08씩 증가시키는 방식이에요
3. 곡선 오브젝트
위의 영상에서 세번째로 나오는 연두색 오브젝트에요
오브젝트의 부드러운 곡선을 구현하는 방법은 로그 함수를 활용하는거에요, 위의 그림이 로그 함수의 그래프에요
오브젝트가 속도r과 각도a로 움직인다고 하고, 오브젝트가 생성되고 난 다음 시간이 지날때마다 증가하는 타이머값인 t가 있으면
오브젝트의 속도r은 그대로 유지하고, 오브젝트의 각도a만 오브젝트가 맨 처음 발사된 시작각도에서 n*log(1+t/m)만큼 증가시키거나 감소시키면 되요,
n이 오브젝트가 회전하는 각도고 m은 t를 나누어서 로그함수에 대입하는 값이에요,
그리고 증가시키는지 감소시키는지에 따라서 오브젝트의 좌우 회전방향을 정할수 있어요
오브젝트가 더 빠르게 회전하도록 하려면 n의 값을 늘리거나 m의 값을 줄이면 되요, 반대로 오브젝트가 천천히 회전하게 하려면 n의 값을 줄이거나 m의 값을 늘리면 되요
위의 영상에서는 n이 60도고 m이 5에요, 그리고 타이머인 t는 매 프레임마다 1씩 증가해요
게임의 코드는 위의 링크로 들어가면 있어요
댓글 0