게임프로젝트를 하며3

su glass·2022년 2월 6일
0

게임만들기

목록 보기
3/6

이번부터는 몬스터를 만들게 된다.

몬스터를 만드는것은 히어로를 만들거나 수리검을 만든것과 똑같이 만들어 주면 된다.

몬스터를 만들었다면 가장 중요한 수리검이 몬스터에 충돌될수있게 만들기위해 수리검배열에서 새로 엘리먼트를 만들고 거시서 if문과 position을 사용하여 수리검의 왼쪽값이나 오른쪽값이 몬스터의 왼쪽값이나 오른쪽값보다 크다면 수리검을 삭제하게 만들어 준다.

하지만 이러면 히어로가 몬스터 너머에서 때리면 수리검은 몬스터보다 왼쪽이나 오른쪽에 있다고 판단하여 수리검이 나가자마자 삭제된다.

이 문제를 해결해주기 위해서 수리검의 다른값이 몬스터의 몸안에 즉 왼쪽에서 날린다면 몬스터의 오른쪽값보다 작다면을 추가로 넣어주면 해결된다.

이때쯤 하나의 문제가 생기는데 수리검을 만드는것은 무한히 만들게 하였기에 메모리에 과부하가 걸리게 된다.

이 문제는 반복문으로 추돌한 수리검과 화면 밖에 나간 수리검 인스턴스를 배열에서 삭제하면 된다.

그 후 몬스터의 체력과 위치조정 등 을 해주기 위해 몬스터 클래스를 만들어주고 거기에서 document등을 이용하여 클래스의 체력 등을 만들어준다.

그리고 체력을 만들었다면 그 체력과 히어로가 공격을 한다면 체력을 달게 만들어야하기에 updatehp를 만들고 히어로class에서도 공격력을 만들어 수리검이 몬스터가 충돌하면 updatehp를 호출하게 만든다.

updatehp에서는 hpvalue - hero.attackDamage를 넣고 몬스터의 hp가 마이너스로 가지 않겠끔 제일 낮은 값을 0으로 설정한다.

그리고 여기서 몬스터의 hp가 0이 되면 몬스터가 사라지게끔 만들어 주는데
updatehp에서 if문을 사용하여 몬스터의 피가 0이되면 dead메소드를 호출하게 만들고 dead메소드는 this.el.classList.add("remove")를 넣어 만든다.

사라지는 시간은 0.2초로 만든다.

그 후 몬스터가 대량생성되어도 괜찮게 하기 위해 간격을 만들어 넣어 준다.

이제 몬스터가 이동할 수 있게 만들기 위해 수리검을 이동시켰을때와 같이 움직이게 한다.

그리고 히어로와 충돌했을때 피가 사라지게 하기 위해 히어로의 피를 만들어주고 몬스터에게 각 각의 데미지를 주고 수리검이 몬스터와 충돌하면 몬스터의 피가 다는 것을 그대로 가져다가 쓰면 된다.

profile
시작한 코딩 공부 노트

0개의 댓글