본문 바로가기

엔트리/엔트리 액션 RPG만들기12

엔트리 액션 RPG 만들기11.5 버그 수정(제작모드와 연계 추가 코딩) 몬스터 애니메이션을 추가한 뒤로 버그를 일부 수정이 필요하여 추가 포스팅을 합니다. 아마 유튜브 영상으로는 빠져 있는 내용입니다. 이 프로젝트에서는 게임 내에서 몬스터와 맵 타일을 배치하는 기능을 가지고 있습니다. 여기서 몬스터 애니메이션과 몬스터 배치와의 연계를 빠져버렸는데... 유튜브에서 이걸 고친다고 영상을 찍으면 시간이 걸릴게 분명하기에... 왜냐면 처음 해보는 것이라서 과연 잘 고쳐질지 이것저것 건들여야 하는거라 영상찍으면서 말을 하면서 하면 입도 아프고 시간도 더 걸리거든요 ㅠㅠ 그래서 고친 다음에 고친 내용을 따로 블로그에 정리해서 올립니다. 주요 고치는 곳은 '몬스터배치' 오브젝트입니다. 기존에는 몬스터를 배치한 만큼만 복제를 하였는데, 로딩바가 추가됨으로써 그냥 모든 맵에 배치를 하기로 .. 2020. 5. 13.
엔트리 액션 RPG 만들기11.몬스터 애니메이션 드디어 몬스터 애니메이션을 추가합니다. 몬스터가 지금까지 간단한 상자로 표시되어있었다면 이제부터는 몬스터를 모양을 넣어줍니다. 먼저 몬스터 애니메이션 오브젝트를 하나 만듭니다. 모양을 보시면 몬스터 애니메이션에 해당되는 그림이 4방향 4개씩 총 16개가 있습니다. 몬스터 스프라이트들은 직접 제작하시는것도 좋지만 아무래도 시간도 많이 걸리는 부분도 있어서... rpg maker의 소스들을 조금 활용하시면 구하기도 쉽고 편안합니다. 복제를 해줍니다. 153개를 복제를 해서 화면에 전부 깔아줍니다. 먼저 몬스터 애니메이션은 몬스터 위치에 계속 이동하도록 만들어 줍니다. 체력이나 상태에 따라서 보이게 하거나 숨기도록 합니다. 복제가 되면 모양을 바꿔줍니다. 0.1초마다 번호를 바구게 되어 있습니다. 여기서 '#.. 2020. 5. 13.
엔트리 액션 RPG 만들기 10. 로딩바 추가 이번에는 로딩창을 만들어 보겠습니다. 엔트리에서는 어쩔 수 없는 로딩이 필요할 수 있습니다. 리스트의 복제라던지, 오브젝트의 복제를 할 때 약간의 시간이 소요되기 때문입니다. 따라서 변수를 2개 만들어서 로딩값 변수가 완료값에 도달할때가지 로딩화면을 띄우고 기다리게 만들 것입니다. 로딩값은 유닛의 복제라던가 리스트 복제등을 수행하는 모든 값들입니다. 이런식으로 복제하기가 수십~수백번을 반복해야 하는 곳에 1씩 더하도록 만들고, 최종적으로 복제가 완료되었을 때의 값을 입력하는 것입니다. 저의 경우 변수값을 모두 더해보니 477이 되네요. 로딩바 오브젝트를 하나 추가합니다. 코딩은 간단합니다. 적당한 위치에서 로딩바를 그려주고, 로딩이 끝나면 지운 다음에 더이상 기다리지 않는 것입니다. 여기서 만약에 새로운.. 2020. 5. 12.
엔트리 액션 RPG 만들기 9. 몬스터 이동, 장애물 판정 안녕하세요. 이번에는 몬스터의 이동과 장애물 판정을 추가합니다. 몬스터가 지형을 인식하고 움직이도록 하는 것이 이번의 목표입니다. 먼저 몬스터 오브젝트에서 코딩에서 추가로 수정합니다. 코딩이 좀 기네요.. ㅠㅠ 엔트리에 '함수'기능에서 지역변수가 제대로 보인다면 이쁘게 만들 수 있는데 엔트리는 그러하지 못해서... 좀 지저분하게 나열할 수 밖에 없네요. 아래가 좀 잘렸는데 밑에서 다시 설명하겠습니다. 이 부분의 코딩은 크게 2가지로 나눌 수 있습니다. 일단 @몬스터이동 이라는 변수를 만드는데 이것은 몬스터가 이동할때 명령어로 쓰는 변수입니다. 캐릭터는 유저의 키보드 입력에 따라 움직인다면, 몬스터는 각각의 명령어 변수값에 따라 움직입니다. 나중에 인공지능을 추가하거나 할 때 이 변수값을 순서대로 어떻게 .. 2020. 5. 12.
엔트리 액션 RPG 만들기 8.캐릭터 공격 만들기 안녕하세요. 승승이입니다. 이번에는 캐릭터 공격을 만들어 봅니다. 공격 오브젝트를 만듭니다. 붉은색의 상자를 만들어서 공격 위치를 확인하여 테스트를 할 수 있도록 합니다. 코딩은 위와 같습니다. 일단 어떤 방향을 가지고 공격을 하면 다음의 앞칸으로 잠시 이동합니다. 그 다음에 자신의 위치에 해당되는 블록값을 계산한 다음에 여기에 몬스터가 있는지 확인으 하고, 만약 몬스터가 있으면 체력을 감소시킵니다. 몬스터의 코딩은 위와 같습니다. 위치를 이동한 다음에 자신의 위치에 공격이 있는지 확인하는 것입니다. 공격이 있다면 체력을 깎아버리고, 그 체력이 0보다 작으면 사망처리 합니다. 2020. 5. 7.
엔트리 액션 RPG 만들기 7.체력바 만들기 안녕하세요. 승승이입니다. 이번에는 체력바를 추가합니다. 엔트리에서 흔히 체력바를 만드는 방법으로는 '그리기'를 사용하는 방법이 있습니다. 붓으로 그리는 방법으로 체력바를 만드는 것은 스크래치에서는 힘든 일입니다. 왜냐하면 스크래치에서 그리기 레이어는 항상 맨 아래에 있기 때문에 체력바가 오브젝트에 의해 가려지기 때문입니다. 그러나 엔트리는 그리기를 하면 해당 오브젝트와 동일한 레이어에서 그리며, 그리는 것을 지우는 것도 오브젝트마다 제어가 되므로 체력바를 그리는데 어려운 일이 아닙니다. 그러나 저는 그리기 대신 '이미지'를 바꾸는 방법으로 만들기로 합니다. 먼저 체력바 오브젝트를 추가합니다. 살짝 귀찮은 일이지만 체력바에 해당되는 이미지를 하나하나 넣어줍니다. 약간의 옵션? 으로 체력바에 그라데이션을 .. 2020. 4. 27.
엔트리 액션 RPG 만들기 6.몬스터 복제 만들기 안녕하세요. 승승이입니다. 이번에는 몬스터 복제를 해봅니다. 지난 시간까지는 몬스터를 배치하였는데 이번에는 배치된 자리에 몬스터를 놓는 것입니다. 배치와 몬스터를 구분해서 하나 더 추가하는 것입니다. 게임모드에서는 몬스터가 살아 움직이게 하는 것이 앞으로의 계획입니다. 몬스터 배치 오브젝트를 하나 추가합니다. 시작을 하면 153번을 복제합니다. 이것으로 메인 루프는 간단히 끝나고, 복제본에 대한 코딩을 따로 해줍니다. 복제본은 위와 같이 행동합니다. 일단 번호에 따라서 자신의 위치로 이동합니다. 공식은 위와 같이 되는데 참고하여 주세요 ^^;; 모드값이 1이면 몬스터는 숨어있다가 나타납니다. 현재는 아무 인공지능이 없고, 단지 리스트값에 따라서 몬스터의 종류만 정해지도록 되어 있습니다. 추후에 hp를 추.. 2020. 4. 25.
엔트리 액션 RPG 만들기 5.몬스터 배치 만들기 안녕하세요. 승승이입니다. 이번에는 몬스터 배치를 추가해보겠습니다. 현재까지는 기본적으로 맵을 배치하도록 되어 있는데, 지금부터는 모드를 3개로 나누겠습니다. 첫번째는 플레이, 두번째는 몬스터배치, 세번째는 맵 에디터 입니다. 모드 글상자 오브젝트를 하나 추가해줍니다. 그리고 '모드'라는 변수를 하나 만들어 주고, 이 모드값에 따라서 글씨를 바꿔줍니다. 또, 번호키를 눌러서 모드를 바꿔줄 수 있도록 만들어 주었습니다. 코딩은 위와 같이 쉽게 되겠네요. 이것은 단순히 모드를 바꾸고 표시를 위한 코딩입니다. 다음은 몬스터 배치 오브젝트를 하나 만들어 줍니다. 몬스터의 종류는 현재 4개가지로 해서 넣어 보겠습니다. 먼저 코딩은 마우스 커서를 따라다니면서 자신의 위치값을 변수로 변환하는 것입니다. 변환식은 위의.. 2020. 4. 22.
엔트리 액션 RPG 만들기 4.캐릭터 애니메이션 만들기와 캐릭터 만들기 팁 안녕하세요. 승승이입니다. 이번에는 캐릭터 애니메이션을 추가해봅니다. 먼저 캐릭터 애니메이션을 위한 그림을 그려야 하는데... 한가지 팁을 준다면, 구글에서 검색해서 적당한 캐릭터를 대고 그리는 방법을 사용하는 겁니다. 여기서 적당히 수정을 해서 자신의 캐릭터로 그릴 수 있습니다. 이렇게요.. 그러면 수많은 캐릭터를 찾을 수 있습니다. 그냥 쓰기에는 이미 남들이 만든 캐릭터라 애정도 적기도 하고, 자신만의 게임을 만든다는 취지가 약해지기도 해서... 조금 더 수정해서 자신의 캐릭터로 바꿔서 쓰기로 합니다. 제가 자주 사용하는 그림 그리는 프로그램은 '잉크스케이프'입니다. 무료 벡터 툴이기 때문에 자주 애용합니다. 이것보다 더 좋은 성능의 프로그램은 Adobe사의 일러스트레이터가 있겠네요. 대신 이건 비싼.. 2020. 4. 22.
엔트리 액션 RPG 만들기 3.장애물 인식하기, 맵 저장하기 안녕하세요. 승승이입니다. 지난 시간에는 맵을 배치하는 기본적인 기능을 넣었습니다. 이번에는 맵을 배치하는 기능을 조금 더 추가 수정하여 장애물을 인식하고 맵 저장하는 기능을 만듭니다. 일단 캐릭터 오브젝트에 보시면 이동하는 코딩을 해 놓았을 겁니다. 현재 이 상태에 있는데, 키보드를 누르면 좌표를 움직이는 단순 구조입니다. 여기에 조금 더 추가해서 블럭을 인식해서, 블럭이 있는 곳은 가지 못하도록 하는 것입니다. 인식의 방법은 여러가지가 있지만 여기서는 '좌표'에 따른 '번호'를 가지고 인식하기로 합니다. 맵의 모든 픽셀을 가지고 계산하는 것이 아니라, 현재 위치에 해당되는 번호를 인식하는 겁니다. 즉 화면의 좌표 대신 위와 같은 1차원 배열의 표로 나누었다고 보시면 됩니다 ^^ 캐릭터의 위치값은 30.. 2020. 4. 20.