인스턴스 변수
인스턴스 변수는 각 몬스터들이 자신의 체력 값을 저장하는 것을 허용한다. 변수는 단순히 변화(또는 vary [변경])할 수 있는 값이며, 각 인스턴스에 별도로 저장된다, 그래서 그 이름이 instance variable [인스턴스 변수]이다.
우리의 몬스터에게 health [체력] 인스턴스 변수를 추가할 수 있습니다. 프로젝트 바 또는 객체 바에 있는 몬스터를 클릭합니다. 또는, 레이아웃을 전환하고 몬스터 객체를 선택할 수도 있습니다. 아래는 속성 바에 있는 몬스터의 속성들을 보여주는 것입니다. Edit variables에 있는 Add/edit를 클릭하십시오.
인스턴스 변수 대화 상자가 나타납니다. 그것은 이전에 보았던 동작 대화 상자와 비슷합니다만, 객체에 대한 인스턴스 변수를 추가하고 변경할 수 있다는 점이 다릅니다. 새로운 변수를 추가하기 위해 녹색 Add [추가] 버튼을 클릭하십시오.
(그림과 같이) 팝업 대화 상자에서, Name의 값에 health 값을 적고, Type은 Number를 그대로 두고, Initial value 에는 5 (보이는 것처럼)를 입력합니다. 이것으로 모든 몬스터가 5의 체력으로 시작하게 됩니다. 그들이 공격을 받으면 1의 체력이 감소하게 되고, 체력이 0이 되면 객체가 파괴됩니다.
작업이 완료되면 OK를 클릭합니다. 인스턴스 변수 대화 상자 안에 몬스터의 속성과 현재 변수가 표시될 것입니다 (당신은 속성 바의 초기 값은 빠르게 바꿀 수 있지만, 변수를 추가하거나 제거하려면 Add / Edit 링크를 클릭해야만 합니다.)
이벤트 변경
이벤트 시트로 다시 전환합니다. 지금, 우리가 몬스터를 총알로 맞추면 즉시 파괴됩니다. 몬스터의 체력을 1감소시키는 것으로 변경해 봅시다.
Bullet - on collision with Monster라는 이벤트를 찾으십시오. “몬스터를 파괴한다”라는 동작이 있다는 것을 알 수 있습니다. 그것을 "체력을 1감소한다"로 바꿔야 합니다. “destroy monster” 동작을 오른쪽 클릭하고 Replace 를 클릭하십시오.
새로운 액션을 삽입할 때와 같은 대화 창이 나타날 것입니다, 하지만 이번에는 우리가 대신 클릭을 해서 동작을 교체할 것입니다. Monster -> Subtract from 을 선택합니다. (Instance variables 범주 안에서) -> 인스턴스 변수 "health", 그리고 for Value 에 1을 입력합니다. Done을 클릭합니다. 그 동작은 이제 다음과 같을 것입니다:
우리는 몬스터를 쏘면 체력을 1을 잃고 총알도 폭발하지만, 몬스터의 체력이 0이 되었을 때 그들이 죽는 이벤트는 만들지 않았습니다. 다른 이벤트를 추가합니다:
Condition: Monster -> Compare instance variable -> Health, Less or equal, 0
Action: Monster -> Spawn another object -> Explosion, layer 1
Action: Monster -> Destroy
왜 “0과 같은”이 아닌 “0과 같거나 작은”일까요? 우리가 체력을 2를 감소시키는 강력한 또 다른 무기를 추가한다고 해봅시다. 몬스터를 쐈을 때, 그것의 체력은 5, 3, 1, -1, -3... 과 같을 것이고 체력이 정확하게 equal to zero [0과 같지] 않을 것이기 때문에, 몬스터는 절대 죽지 않을 것입니다! 따라서, 무언가의 체력이 다 되는 것을 테스트할 때는 “0과 같거나 작은”을 사용하는 것이 좋은 방법입니다.
게임을 실행합니다. 이제 몬스터를 5번 맞추면 그들이 죽을 것입니다!
점수 유지
플레이어가 그들이 얼마나 잘했는지 알 수 있도록 점수를 제공해 봅시다. 우리는 이에 대해 다른 변수가 필요합니다. 당신은 “플레이어의 인스턴스 변수 중 하나에 점수를 넣을 것이다!”라고 생각할 것입니다. 그것은 나쁜 첫 번째 생각은 아니지만, 값이 객체의 “안”에 저장되어야 하는 것을 기억해야 합니다. 만약 변수가 없다면 또 다른 변수도 없다. 그래서 만약 플레이어가 죽을 경우, 더 이상 그들의 점수를 말해줄 수 없습니다, 왜냐하면 플레이어는 죽었기 때문입니다.
대신, 우리는 global variable [전역 변수]를 사용할 수 있습니다. 인스턴스 변수처럼, 전역 변수(또는 그냥 “전역”)는 문자 또는 숫자를 저장할 수 있습니다. 각 변수는 하나의 숫자 또는 문자의 한 조각을 저장할 수 있습니다. 전역 변수는 모든 레이아웃을 가로지르는 게임 전체에서 사용할 수 있습니다. – 만약 다른 레벨을 추가할 때 편리하다.
이벤트 시트 하단의 공간을 Right-click [오른쪽 클릭]하고, Add global variable을 선택합니다.
Name에 Score를 입력합니다. 0에서 숫자를 시작하도록 만들고, 다른 필드는 기본 값으로 두고 OK를 합니다.
이제 이벤트 시트에 전역 변수 한 줄이 나타납니다. 이 이벤트 시트 안에 있지만, 어느 레이아웃의 어느 이벤트에서도 그것에 접근할 수 있습니다.
Note: 이벤트의 작은 “범위”로 접근할 수 있는 local [지역] 변수도 있지만, 지금은 그것에 대해 생각할 필요는 없습니다.
몬스터를 죽이면 플레이어에게 점수를 주도록 합시다. 우리의 "Monster: health less or equal 0" 이벤트 (몬스터가 죽을 때) 안의, Add action을 클릭합니다, System을 선택합니다 -> Add to (전역 & 지역 변수 안에서) -> Score, 값을 1로 합니다. 이제 이벤트는 다음과 같을 겁니다:
이제 플레이어가 몬스터를 죽일 때마다 점수가 1씩 증가합니다. – 그러나 그들은 자신의 점수를 볼 수 없습니다! 그들의 화면에 글자를 보여주도록 합시다.