function heal_range_display_script()
{
var s = surface_create(460,360);
var camera_x=camera_get_view_x(view_camera[0])
var camera_y=camera_get_view_y(view_camera[0])
if(surface_exists(s))
{
surface_set_target(s);
draw_clear_alpha(c_black,0);
with healrange_object
if bbox_right>=camera_x && bbox_left<=camera_x+460
&& bbox_bottom>=camera_y && bbox_top<=camera_y+360 // ์นด๋ฉ๋ผ ์์ ์๋ ๋๋ค๋ง ๊ทธ๋ฆฌ๊ฒ
draw_sprite_ext(range_outline_sprite,image_index,x-camera_x,y-camera_y,2,2,0,c_blue,1) // ํ ๋๋ฆฌ+๋ด์ฉ๋ฌผ ๊ทธ๋ฆผ
gpu_set_blendmode(bm_subtract)
with healrange_object
if bbox_right>=camera_x && bbox_left<=camera_x+460
&& bbox_bottom>=camera_y && bbox_top<=camera_y+360
draw_sprite_ext(range_outline_sprite,image_index+3,x-camera_x,y-camera_y,2,2,0,c_blue,1) // ๋ด์ฉ๋ฌผ(+๊ฒน์น๋ ํ ๋๋ฆฌ) ์ ๊ฑฐ
gpu_set_blendmode(bm_normal)
surface_reset_target();
draw_surface(s,camera_x,camera_y);
surface_free(s);
}
var s = surface_create(460,360); // ๋ค๋ฅธ ์ข ๋ฅ์ ํํ์์ ๋ํด ๊ฐ์ ์ฝ๋ ํ๋ฒ ๋
if(surface_exists(s))
{
surface_set_target(s);
draw_clear_alpha(c_black,0);
with bobble_range_object
if bbox_right>=camera_x && bbox_left<=camera_x+460
&& bbox_bottom>=camera_y && bbox_top<=camera_y+360
draw_sprite_ext(range_outline_sprite,image_index,x-camera_x,y-camera_y,2,2,0,c_yellow,1)
gpu_set_blendmode(bm_subtract)
with bobble_range_object
if bbox_right>=camera_x && bbox_left<=camera_x+460
&& bbox_bottom>=camera_y && bbox_top<=camera_y+360
draw_sprite_ext(range_outline_sprite,image_index+3,x-camera_x,y-camera_y,2,2,0,c_yellow,1)
gpu_set_blendmode(bm_normal)
surface_reset_target();
draw_surface(s,camera_x,camera_y);
surface_free(s);
}
}
range_outline_sprite๋ ์ด๋ ๊ฒ ์๊ฒผ์ต๋๋ค
์ ๊ฑฐ๋ง ๋๋ก์ฐํ๋ฉด ์ด๋น ํ๋ ์์ด 100์์ 40๊น์ง ๋จ์ด์ ธ์ ์ด๊ฒ ์ด๋ ๊ฒ ๋ฌด๊ฑฐ์ด ์ฝ๋์ธ๊ฐ ์ถ์๋ฐ
ํน์ ์ ๊ฐ ์๋ชปํ๊ณ ์๋ ๋ถ๋ถ์ด๋ ๋ ๊น๋ํ๊ฒ ํํํ ์ ์์ผ๋ฉด ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค
ํด๋น ์คํฌ๋ฆฝํธ๋ ๋ธ๋ญ ์ค์น์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ค๋ธ์ ํธ ํ๋์์๋ง ์คํ๋ฉ๋๋ค
์ผ๋จ ์ ์ฝ๋๊ฐ ๋งคํ๋ ์ ํธ์ถ๋๋ค๋ผ๋ ์ ์ ํ์ ๋๊ธ ๋ฌ์๋ณผ๊ป์ ์๋๋ฉด ๋ฌด์๋ถํ ์ผ๋จ ์ํผ์ค๋ผ๋๊ฒ ๋ ๋ํ๊ฒ ํ ์ค์ณ ๋น์ทํ๊ฑฐ๊ฐ์๋ฐ ๋งคํ๋ ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์๋ค ์์ด๋ค ํ ํ์ ์๋์? ์ ์ง ๋ง๋ค์ด ๋๊ฑฐ clear๋งํด์ ์ธ๊ถ๋จน์์ ์์๊ฑฐ๊ฐ์? ๊ทธ๋ฆฌ๊ณ ์ํผ์ค๋ฅผ ๊ฐ์ฒด๋ฅผ ๋จ๊ฒจ๋๋๊น์ ํ ๋๋ฆฌ๊ฐ ์ ๋๋ฉ์ด์ ์ด ๋์ง ์๋๋ค๋ฉด ์ ์ด์ ๋งคํ๋ ์ ๋ค์ ๊ทธ๋ฆดํ์ ์์๊น ์ถ์ต๋๋ค camera_x,camera_y๊ฐ ์์ง์ด๊ฑฐ๋ ์ ํ์๊ฐ ์๊ฒป์๋๋ง ์ํผ์ค ๋ด์ฉ์ ๊ฐฑ์ ํด์ฃผ๊ณ ํ์์๋ ๊ทธ๋ฅ ์ถ๋ ฅ๋ง ํด๋ณด๋๊ฑด ์ด๋จ๊น์.
๋๋ก์ฐ ์ฝ๋๋ผ ๋งคํ๋ ์ ๊ทธ๋ฆฌ๋๊ฒ ๋ง์ต๋๋ค. camera_x๋ ์บ๋ฆญํฐ ์ค์ฌ์ผ๋ก ๊ณ์ ๋ฐ๋๋๊ฑฐ๋ผ ๊ทธ๋ ๊ฒ ํ ๊ฑฐ๋ฉด ๊ทธ๋ฅ ๋งต ์ ์ฒด๋ฅผ ๋์์ผ๋ก ๊ทธ๋ ค์ผ๋ ๊ฑฐ๊ฐ์๋ฐ 2560*1440 ์ฌ์ด์ฆ๋ผ ๊ทธ๊ฑฐ๋๋ก ๊ฑฑ์ ๋๋ค์ ๊ทธ๋ฆฌ๊ณ ์ํผ์ค๋ฅผ ๊ณ์ ๋จ๊ฒจ๋๋๊ฒ๋ ์ ๊ฒฝ์ฐ์ด๊ณ ์ ์ง์ ํด๋ด์ผ ์๊ฒ ์ง๋ง ํผ๋๋ฐฑ ๊ฐ์ฌํฉ๋๋ค!
var s = surface_create(460,360); << draw ์ ๋ฐ์ผ๋ฉด ์ฑ๋ฅ ํ๋ฝ ์ง๋ฆผ create์์ ์์ฑํด๋๊ณ draw์์ ์์ฑ๋ ์ํผ์ค ํธ์ถ๋ง ํด์ ์ง์ฐ๊ณ ๊ทธ๋ฆฌ๊ณ ์ง์ฐ๊ณ ๊ทธ๋ฆฌ๊ณ ํ๋๊ฒ ๋์
ํ ๊ทธ๋ ๊ตฐ์ ์์ฑ์ด๋ฒคํธ์ ๋ฃ์ด์ ํ๋ฒ ํด๋ณผ๊ฒ์
ํ ๋ง์์ฌ ์ด๊ฒ ๋ฌธ์ ์๋๊ฒ๊ฐ์์ ์ฌ์ค ๋๊ธ ๋ณด๋ฉด์๋ '์๋ฌด๋ฆฌ ๊ทธ๋๋ ์ด๊ฒ 60ํ๋ ์์ด๋ ๊น์๋จน์ ์ค์๊ฐ?' ํ๋๋ฐ ์ ๊ฒ๋ง ์์ฑ์ด๋ฒคํธ๋ก ๋นผ์ ๋ค์ ํ๋๋ ๋ฐ๋ก 100ํ๋ ์ ๊ทธ๋๋ก ๋ฐฉ์ด๋๋ค์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!!!
์ํผ์ค๋ ์์ฑ ์ฝ๋์ surf = -1; ์ด๋ ๊ฒ ์ ์ธํ ๋ค์์, ๋๋ก์ฐ ์ฝ๋ ๋งจ ์ฒ์์ if(surface_exists(surf)){surface_create(460,360)} ์ด๋ฐ์์ผ๋ก ์กด์ฌํ๋์ง ํ์ธํ๊ณ , ์์ผ๋ฉด ์์ฑํด์ผํฉ๋๋ค. ๊ตณ์ด ์ ๋ ๊ฒ ๋งค ํ๋ ์๋ง๋ค ์๋์ง ํ์ธํ๋ ์ด์ ๋, ์ ์ฒดํ๋ฉด ์ ํ์ด๋ ์ปดํจํฐ ๋ด๋ถ ์ฌ์ ์ผ๋ก vram์ด(์ํผ์ค๊ฐ) ๋ ์๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๋ง์ฝ ์ํผ์ค๊ฐ ๊ณ์ ์ ์ฅ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ(์ค๊ฐ์ ๋ ๋ผ๊ฐ๋ฉด ์๋๋ ๊ฒฝ์ฐ) ๋งค ํ๋ ์๋ง๋ค ๋ฒํผ์ ์ ์ฅํด์ค์ผํฉ๋๋ค./
์ถ๊ฐ์ ์ผ๋ก, surface_set_target์ ๊ทธ์์ฒด๋ก ์ฑ๋ฅ์ ๊ฝค ๋จน๊ธฐ ๋๋ฌธ์ ์ต๋ํ ์ ๊ฒ ํธ์ถํ๋๊ฒ ์ข์ต๋๋ค.
์ ๋์์ ๋ค ์ค๋ช ํด์ ์ด๋ฏธ ํ์ จ์ ๊ฒ ๊ฐ๊ธด ํ๋ฐ, ๋น์ฐํ ์ํผ์ค ํ๋ฆฌ๋ ํ์ ์์ด์ฉ
์ํผ์ค ํ๋ฆฌ๊ฐ ํ์์๋จ๊ฑด ๋ฌด์จ๋ง์ธ์ง ์ค๋ช ํด์ฃผ์ค์ ์๋์ ๋ค์ผ์๋ ํญ์ surface_free ํด์ค์ผํ๋๊ฑธ๋ก ์๊ณ ์๋๋ฐ.. ์ผ๋จ ์ํผ์ค ์์ฑ์ ์์ฑ์ด๋ฒคํธ๋ก ์ฎ๊ฒจ์ ์ํผ์ค ํ๋ฆฌ๋ ์ญ์ ์ด๋ฒคํธ๋ก ์ฎ๊ฒผ๊ธด ํฉ๋๋ค
์ํผ์ค๋ฅผ ๋งค ํ๋ ์๋ง๋ค ํ๋ฆฌ์์ผ์ค ์ด์ ๊ฐ ์๋ค๋ ๋ป์ด์์ด์. ์ญ์ ํน์ ํด๋ฆฐ ์ด๋ฒคํธ๋ก ์ฎ๊ธฐ์ จ์ผ๋ฉด ๋ฌธ์ ์์ต๋๋ค. ๋ค๋ง ๊ฒ์ ์ฌ์์ ๋ฑ์ ์์ ์ ์ญ์ ์ด๋ฒคํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ์ง ์์ผ๋, clean ์ด๋ฒคํธ๋ก surface_free ์ฝ๋๋ฅผ ์ฎ๊ธฐ๋๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ๋ create์์ ์ํผ์ค์ ์ธ ๋ณ์๋ฅผ ์ ์ธํ๊ณ (์์ฑํด๋ ์๊ด์์) ๋๋ก์ฐ์์ ์ํผ์ค๊ฐ ์์ ๊ฒฝ์ฐ์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ์ง๋๋ฐ ํน์๋ ์ค์๋ก ๋ค๋ฅธ ์ฝ๋์์ freeํ๊ฑฐ๋ ์ฐฝ ๊ด๋ จ ํจ์๋ก ์๋์ฐ๋ฅผ ๋ฐ๊พธ๋ฉด ์ํผ์ค๊ฐ ์์ด์ง ์๋ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ๋ ๊ฒ ์์ ํจ surface_set_target, draw_surface, gpu_set_blendmode ๊ฐ์ ํจ์๋ gpu ๋ฒํ ์ค ๋ฒํผ ๋ฐฐ์น๋ฅผ ๋๋ ๋ฒ๋ ค์ ์ฑ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ ์ต์ํ์ผ๋ก ํธ์ถํ๋ ๊ฒ ์ข์
๊ฒ๋ฉ๋จ ํ์ดํ ~
์ ์ฒด์ ์ผ๋ก ๋ฌด๊ฒ๋ค๊ณ ๋ค์ด์ ์ง๊ธ๊น์ง ์ฌ์ฉ์ ์์ ํด์๋๋ฐ ์ด๋ฒ์ ์จ๋ณด๋ ์์ฃผ์ ์ฝ๋ ๋ช๊ฐ๋ง ์กฐ์ฌํ๋ฉด ์๊ฐ๋ณด๋ค ์ด๋ง์ด๋งํ๊ฒ ๋ฌด๊ฒ์ง ์๋ค์ ์ฐธ๊ณ ํ๊ฒ ์ต๋๋ค ๊ฒ๋ฉ๋จ ํ์ด์ด~