리더보드 광고


[GM:S Tutorial]출렁이는 물 표현하기 (3. 완성하기) 게임메이커 따라하기

이거 만드는 겁니다  -> http://randomachi.egloos.com/6333928


Part 2에서 만든 오브젝트의 Draw 이벤트로 이동합니다.

를 더블클릭해서 코드를 편집합니다.

  1. for(var i = 0; i < image_xscale; i ++) {
  2.     var A = sin(angle + i/wave_wide) * wave_size;
  3.     var B = i * image_width;
  4.     draw_rectangle(x + B, y + A, x + B + image_width, y + image_height, false);
  5. }
for 문을 이용해서 image_xscale 만큼 내용을 반복합니다.
반복문 내용이 다 끝나면 화면에 표시됩니다.

var A = sin(angle + i/wave_wide) * wave_size;
A는 출렁이는 부분의 Y좌표로 쓸 예정입니다.

wave_wide 가 늘어나면 파도가 완만해집니다.
wave_size가 늘어나면 출렁이는 정도가 심해집니다.

var B = i * image_width;
B는 이미지가 끝나는 지점에서 새로운 사각형을 그리기 위함 입니다.

draw_rectangle(x + B, y + A, x + B + image_width, y + image_height, false);

x + B 지점 부터 x + B + image_width 까지
y + A 지점 부터 y + image_height 까지
사각형을 그립니다.



 누르고 코드 에디터를 빠져 나갑니다.
F5을 눌러 실행해 봅니다.

전보다 부드럽게 움직이긴 하지만 아직 1개의 사각형입니다.

위 코드에서 for문의 조건으로 
i < image_xscale
를 지정했습니다.

image_xscale 은 
image_xscale = x;

로 정할 수 있지만 이렇게 정하면 크기가 다른 파도를 만들때마다 새로 정의를 해줘야 함으로 이건 귀찮습니다.
여기서 부턴 Game maker studio만의 특권입니다.

다시 오브젝트 프로퍼티로 돌아옵니다.

스프라이트를 Part 1 에서 그렸던 사각형으로 정합니다.

OK버튼을 눌러 빠져나온뒤 다시 룸으로 돌아갑니다.

파란 물음표였던 오브젝트가


사각형으로 변합니다.
이 사각형을 클릭하면 태두리가 잡힙니다.

오른쪽 아래의 사각형을 잡고 오른쪽 아래로 늘립니다.

늘려보면 
이런 식으로 비율 무시하고 칸에 맞춰집니다.
지금은 16 x 8 의 그림이라 32 x 32의 칸에 맞춰져도 정수의 배로 딱딱 맞춰집니다.

15 x 5 이런식의 그림일떄는 
부분을 15 , 5 등의 원하는 비율에 맞추면 됩니다.
일단 16 x 8 그림이니깐 16, 8로 설정하겠습니다.

그럼 이렇게 보입니다.

원하는 크기로 맞추고 왼쪽을 보면
ScaleX
ScaleY
부분이 있습니다.
 이부분이 해당 인스턴스의 image_xscale, image_yscale 부분이 됩니다.
20배로 늘렸으니 사각형은 20개가 되겠죠.

룸을 빠져 나가고 F5를 눌러 실행해 봅시다.

드디어ㅓㅓㅓㅓㅓㅓ 꿀렁이는게 보입니다!!!

이제 색을 바꿔봅시다.

사실 Part 2 에서 color = c_red 로 정했습니다.
이제 이걸 그림에 적용할 것입니다.

오브젝트의 Draw 이벤트로 가서
라인 1번이랑 라인 7번을 추가해줍니다.

  1. draw_set_color(color); // 여기입니다!
  2. for(var i = 0; i < image_xscale; i ++) {
  3.     var A = sin(angle + i/wave_wide) * wave_size;
  4.     var B = i * image_width;
  5.     draw_rectangle(x + B, y + A, x + B + image_width, y + image_height, false);
  6. }
  7. draw_set_color(c_black)// 여기입니다!
draw_set_color(color);
draw 함수로 그리는 그림의 색상을 color 로 정합니다. (c_red)


draw_set_color(c_black);
다시 검은색으로 변경합니다.
안할경우 다른 오브젝트에서 그리는 그림의 색상이 color와 같은 색으로 변합니다..



F5를 눌러 실행하면 붉은색으로 변한것을 확인 하실 수 있습니다.

이제 거품(?)이랑 깊이를 줄겠습니다.



  1. draw_set_color(color)
  2. for(var i = 0; i < image_xscale; i ++) {
  3.     var A = sin(angle + i/wave_wide) * wave_size;
  4.     var B = i * image_width;
  5.     draw_rectangle(x + B, y + A, x + B + image_width, y + image_height
  6.     * image_yscalefalse)// 여기입니다!
  7.     draw_sprite(image, 0, x + B, y + A); // 여기입니다!
  8. }
  9. draw_set_color(c_black)

5,6 라인 줄을 바꾸실 필요는 없습니다.
y2를 y + image_height 에서
y + image_height * image_yscale 로 바꿉니다.


draw_sprite(image, 0, x + B, y + A);
 image를 그립니다.

다시 룸으로 돌아간뒤 인스턴스를 원하는 만큼 늘려 줍니다.



F5로 실행시켜 봅니다.

드디어 완성됬습니다아ㅏㅏㅏㅏㅏㅏㅏ

동작확인을 위해 여러개 더 넣어봅니다.

정상적으로 작동합니다.


Part 1, Part 2는 읽기 편하게 수정하겠습니다!


읽느라 수고하셨습니다!



핑백

덧글

댓글 입력 영역


통계 위젯 (화이트)

410
48
6479

사이드 광고