본문 바로가기
GameMaker강좌[GM8]/예제 모음

부채꼴 충돌 체크 예제

by 타락카얀 2017. 2. 8.
728x90

부채꼴 충돌 체크 예제입니다.



(▲ 부채꼴 충돌 체크)


예제에는 두가지 스크립트가 있습니다.



collision_ellipse_sector : 특정 위치(x,y) 체크
collision_ellipse_sector_obj : 오브젝트 충돌 체크



첫번째는 좌표를 체크할 수 있는 스크립트입니다.


 

collision_ellipse_sector(width,height,x,y,current_dir,current_dir_range,target_x,target_y)

     width : 타원형의 가로 지름
     height : 타원형의 세로 지름
     x,y : 타원형의 중심점 위치
     current_dir : 부채꼴의 방향
     current_dir_range : 부채꼴의 중심각
     target_x,target_y : 충돌 체크할 좌표



부채꼴의 크기는 지정한 타원형에서 부채꼴 중심각 크기로 정할 수 있습니다.

이 스크립트는 지정 좌표가 부채꼴에 충돌 했을 때 true(1), 충돌하지 않았을 때는 false(0)를
반환합니다.

예를 들어, 부채꼴이 320x160 크기의 타원형에서 부채꼴의 중심각이 60이고, direction 방향에
있을 때, obj_enemy 오브젝트들의 x,y 좌표가 부채꼴 내에 있는 오브젝트를 파기할 경우,



with(obj_enemy){
if collision_ellipse_sector(320,160,other.x,other.y,other.direction,60,x,y)==true
{instance_destroy();}
}



이와 같이 할 수 있습니다.

두번째는 오브젝트를 충돌 체크할 수 있는 스크립트입니다.


 

collision_ellipse_sector_obj(width,height,x,y,current_dir,current_dir_range,obj)

     width : 타원형의 가로 지름
     height : 타원형의 세로 지름
     x,y : 타원형의 중심점 위치
     current_dir : 부채꼴의 방향
     current_dir_range : 부채꼴의 중심각
     obj : 충돌 체크할 오브젝트



이 스크립트는 오브젝트에 지정한 마스크에 반응하며, 체크할 오브젝트들 중 부채꼴에 충돌한
인스턴스 id 를 반환합니다.

예를 들어, 부채꼴이 320x160 크기의 타원형에서 부채꼴의 중심각이 60이고, direction 방향에
있을 때, obj_enemy 오브젝트들이 부채꼴과 충돌 한 인스턴스를 파기할 경우,


 

inst=collision_ellipse_sector_obj(320,160,x,y,direction,60,obj_enemy);
if instance_exists(inst){with(inst){instance_destroy();}}



이와 같이 할 수 있습니다.

자세한 것은 예제를 참고하세요.






- 스크립트 -

collision_ellipse_sector.gml


- 예 제 -

collision_ellipse_sector.gmk



300x250

댓글