본문 바로가기
GameMaker강좌[GM8]/기초강좌

[게임메이커강좌-기초]오브젝트(object)와 인스턴스(instance)

by 타락카얀 2013. 4. 5.
728x90






◈오브젝트(object)와 인스턴스(instance)



⊙오브젝트(object)
오브젝트는 게임메이커의 리소스에 해당합니다.



(▲ 오브젝트)


게임에서 사운드와 음악을 재생하고, 다양한 캐릭터의 모습을 설정할 수 있고, 그리고 이동하기등 여러가지

이벤트를 이 곳에서 설정하게 됩니다.





⊙인스턴스(instance)
인스턴스는 게임상에 오브젝트를 생성했을 때의 객체를 말합니다.



(▲ 인스턴스)


게임상에서 인스턴스는 고유의 ID번호(숫자로 100000이상)를 부여하게 되는데, 이것을 이용해 해당 인스턴스의

변수나 여러가지 설정들을 게임상에서 재설정을 할 수가 있지요.
이 ID를 얻는것은 상황에 따라 다릅니다.
게임상에서 2개 이상의 인스턴스가 충돌시 얻는 방법이 있습니다.



     //충돌 오브젝트(obj_enemy)의 방향을 랜덤으로 지정해주고,
     speed를 5로 재할당한 후에 인스턴스 자신은 파기합니다.

     inst=instance_place(x,y,obj_enemy); //먼저, 변수에 충돌한 인스턴스 id를 저장.
     inst.direction=irandom(360); //인스턴스 id를 저장한 변수를 통해 해당 인스턴스의 정보를 변경
     inst.speed=5;


     instance_destroy();



이것은 instance_place 함수를 통해 현재 오브젝트와 obj_enemy 오브젝트가 충돌 하면, 충돌한 obj_enemy

오브젝트중 하나의 id를 inst라는 임시 변수에 할당을 합니다. 그러면 inst라는 변수에 얻은 id로 충돌한

상대 인스턴스(obj_enemy)의 정보를 변경할 수 있도록 하는 것이지요.

상대 인스턴스의 정보를 제어하는 것은,



     (인스턴스 id).변수=설정값



또는,



     with(인스턴스 id){변수=변수값}



이와 같이 하면 제어할 수 있습니다.


그리고 오브젝트를 검색하여 적절한 id를 찾는 방법도 있습니다.



 
    //obj_enemy를 검색해서 인스턴스와 충돌한 오브젝트의 hp가 10보다 크면
     -10을 감소시키고,
10이하이면 hp를 0으로 만듭니다.
     n=instance_number(obj_enemy);
     for(i=0;i<n;i+=1;)
     {
     inst=instance_find(obj_enemy,i);

     if place_meeting(x,y,inst){
     if inst.hp>10{inst.hp-=10;}else{inst.hp=0;}
     }


     }


인스턴스의 생성은 instance_create(x,y,오브젝트)의 함수로 생성할 수 있습니다.
또한 인스턴스가 생성되었을 때 그 인스턴스의 id를 변수에 할당하여 정보를 변경할 수도 있습니다.
예를 들면,



 
    inst=instance_create(x,y,obj_explo);
     inst.alarm[0]=180;


이와 같이, inst 라는 임의의 변수에, 생성된 인스턴스의 ID값을 할당하고, 생성할 때 얻은 id를 통해 해당 인스턴스의

변수값을 변경할 수도 있습니다.


이처럼 인스턴스는 오브젝트를 룸에 생성 했을 때의 객체로, 기존의 오브젝트에 설정한 정보를 해당 인스턴스의 id를

통해 정보를 다시 갱신하거나 재설정할 수 있습니다.




300x250

댓글