디시인사이드 갤러리

마이너 갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[💬일반] [정보글] 알만툴VX ACE로 방향키 입력으로 움직이는 그림 만들기

vertex갤로그로 이동합니다. 2024.05.18 19:52:29
조회 150 추천 3 댓글 2
														

알만툴 VX ACE로 방향키 입력으로 움직이는 그림을 만드는 방법에 대한 글이에요


그리고 저도 알만툴을 엄청 잘 알고있는건 아니라, 제가 아는 범위 안에서만 쓰는 글이에요



https://forums.rpgmakerweb.com/index.php?threads/script-call-collection-for-vxace.25759/#entry247427

 


위에 올려놓은 링크로 들어가면, 알만툴의 기본적인 명령어들의 스크립트를 볼 수 있어요






1. 알만툴 화면 안에서의 이미지 좌표와 각도


7cf3c028e2f206a26d81f6e440897d65


첫번째로 설명해야 하는 내용은 알만툴 화면 안에서의 이미지의 좌표랑 각도에 대한 내용이에요


위에 올려놓은 그림이 알만툴 VX ACE에서의 화면 안에서의 좌표와 각도에 대한 그림이에요




우선 왼쪽 그림은, 알만툴 화면 안에서의 x랑 y좌표에 대한 내용이에요


그림에서 보이는것처럼 화면 왼쪽 가장자리의 x값이 0이고


오른쪽 가장자리의 x값이 544


그리고 위쪽 가장자리의 y값이 0이고


아래쪽 가장자리의 y값이 416이에요




일반적인 좌표계랑 다르게 y값이 위로 갈수록 감소하고, 아래로 내려갈수록 증가하는 방향이에요




그리고 다음으로 오른쪽 그림은, 알만툴 화면 안에서의 극좌표계의 각도에 대한 내용이에요


오른쪽의 0도에서 시작해서, 시계방향으로 회전해요, 그래서 아래가 90도 왼쪽이 180도 위쪽이 270도가 되는 방식이에요




앞서 설명했던것처럼 알만툴 화면에서는 일반적인 좌표계랑 다르게 y좌표가 위로갈수록 감소하고 아래로 갈수록 증가하기 때문에


알만툴 화면 안에서의 극좌표계의 각도도, 0도에서 시작해서 반시계방향으로 증가하는 일반적인 극좌표계와는 다르게


0도에서 시작해서 시계방향으로 증가하는 방식이에요




그리고 아래의 수식은, 극좌표계상에서 특정 각도와 길이만큼 떨어진 점을 표시하는 수식이에요


그림에 나와있는것처럼 원점 (x1,y1)로부터 a각도로 r거리만큼 떨어진 점 (x2,y2)의 좌표는


x2 = x1+r*cos(a)

y2 = y1+r*sin(a) 


로 구할수 있어요, cos 랑 sin은 삼각함수에요






2. 방향키 입력 함수와 좌표값 범위 제한 함수






ㅡㅡㅡㅡㅡ

def input_arrow()

angle = nil

if ( Input.press?(:DOWN) && Input.press?(:RIGHT) ) && angle == nil

angle = (Math::PI/180)*45

end

if ( Input.press?(:DOWN) && Input.press?(:LEFT) ) && angle == nil

angle = (Math::PI/180)*135

end

if ( Input.press?(:UP) && Input.press?(:LEFT) ) && angle == nil

angle = (Math::PI/180)*225

end

if ( Input.press?(:UP) && Input.press?(:RIGHT) ) && angle == nil

angle = (Math::PI/180)*315

end

if Input.press?(:RIGHT) && angle == nil

angle = 0

end

if Input.press?(:DOWN) && angle == nil

angle = (Math::PI/180)*90

end

if Input.press?(:LEFT) && angle == nil

angle = (Math::PI/180)*180

end

if Input.press?(:UP) && angle == nil

angle = (Math::PI/180)*270

end

return angle

end

ㅡㅡㅡㅡㅡ




ㅡㅡㅡㅡㅡ

def inside(x,y,r,l,t,b)

x1, y1 = x, y

if x>r

x1 = r

end

if x<l

x1 = l

end

if y<t

y1 = t

end

if y>b

y1 = b 

end

return x1,y1

end

ㅡㅡㅡㅡㅡ



알피지 메이커 VX ACE는 프로그래밍 언어로 Ruby를 사용하고 있어요


그리고 위에 올려놓은 코드는 Ruby 프로그래밍 언어랑, 알만툴 내의 명령어를 이용해서 정의한


방향키 입력값을 출력하는 함수와, 좌표의 범위를 제한하는 함수에요





첫번째 함수는 input_arrow()함수에요, 키보드의 방향키 입력에 따라서 출력값이 달라지는 함수에요


만약 아무런 방향키도 입력하지 않았다면 nil 을 출력하고


키보드의 특정한 방향키가 입력되고 있다면, 8방향으로 해당 각도를 라디안값으로 출력해요




첫번째에서 올려놓은것처럼 알만툴 화면 상에서의 각도값으로 출력하는거에요


예를들어서 오른쪽 방향키는 0도, 오른쪽이랑 아래를 동시에 누르면 45도


아래키만 누르면 90도, 아래키랑 왼쪽키를 동시에 누르면 135도, 이런식으로 8방향 각도로 출력해요





Ruby프로그래밍 언어는 각도로 라디안을 사용해요,


라디안에서는 파이(약 3.14)가 180도에요


즉, 180도를 입력하고 싶으면 180이 아니라 약 3.14인 파이값을 입력해야해요




그리고 이 첫번째 함수는, 방향키로 그림을 움직일때


플레이어가 지금 어떤 방향키를 누르고 있는지를 체크하기 위해서 사용해요




그리고 두번째 함수는 inside(x,y,r,l,t,b) 함수에요


이건 입력값으로 입력한 x값이 l보다 작으면 l값을 출력하고, 그렇지 않으면 입력값 x를 그대로 출력해요


마찬가지로 r보다 크면 r을 출력하고, 그렇지 않으면 x를 출력해요


y값도 동일하게 t보다 작으면 t값을 출력하고, 그렇지 않으면 입력한 y값을


마찬가지로 b보다 크면 b값을 출력하고, 그렇지 않으면 입력한 y값을 출력해요




즉, xy값을 r l t b 범위 안으로 제한시켜주는 함수에요


이건, 플레이어가 방향키로 그림을 움직일때, 그림이 화면 밖으로 벗어나지 않도록 하는대에 사용되는 함수에요


그림의 현재좌표가 화면 밖으로 벗어났을때 화면 안쪽으로 제한시키는대에 사용되는 함수에요





3. 인게임에서의 적용



7ff3c028e2f206a26d81f6e044817d6ff3


이게 프로젝트 파일의 예시에요, 맵의 배경을 설정한거랑, 오른쪽 위의 이벤트 빼고는 아무것도 없는 비어있는 맵이에요





7ef3c028e2f206a26d81f6e642877469e0



그리고 이건 오른쪽 위에 있는 이벤트의 내용이에요,


이벤트의 내용을 보면, 첫번째인



$player_x = 272

$player_y = 208

$player_move = 5



이건 각각 플레이어의 시작 xy위치, 그리고 이동속도를 정의하는거에요


여기서는 272,208 즉 화면 중앙에서 시작하도록 했어요




그리고 아래의 루프로 반복하는 부분은



if input_arrow() != nil


$player_x += $player_move*Math.cos(input_arrow())

$player_y += $player_move*Math.sin(input_arrow())


$player_x, $player_y = inside($player_x, $player_y, 544-24, 0+24, 0+24, 416-24)


end


screen.pictures[1].show("picture1", 1, $player_x, $player_y, 100, 100, 255, 0)



이 내용이에요, 앞서 설명한 함수들을 사용하는거에요


우선 input_arrow()가 nil이 아니면, 즉 플레이어가 방향키를 눌렀으면


그 각도에 따라서, 앞서 설명한 극좌표계상의 각도와 거리 공식으로, 플레이어의 이동속도만큼 플레이어의 좌표를 이동시키고


그다음 inside(x,y,r,l,t,b)함수로 그 범위를 화면을 벗어나지 않도록 제한하는거에요, 


여기서는 48x48크기의 이미지를 움직이기 때문에, 이미지가 화면 가장자리에서 24만큼 안쪽의 범위를 벗어나지 않도록 했어요




그리고 아래에서는 해당 xy좌표로 이미지를 표시하는거에요,


이런식으로 하면 실시간으로 플레이어의 좌표값에 이미지를 표시해주니까


결국 플레이어가 방향키로 이동시키는 이미지를 만들수 있게되는거에요



79f3c028e2f206a26d81f6e145857d6e52



이건 스크립트 에디터에서 앞서 설명해놓은 함수를 정의해놓는 부분이에요,


여기서는 위에 표시한 (Insert here)부분에다 원래 있던 초록색 주석을 제거하고 적어놓았어요




78f3c028e2f206a26d81f6e14789716a69



3db4d332f0c03df720afd8b236ef203e318d02ac62



이게 인게임상에서 움직이는 이미지에요, 위에 올려놓은것처럼 Picture에 넣어놓았어요, 48x48크기에요




그리고 이런식으로 하면, 위에 올려놓은 영상처럼 플레이어의 방향키 입력에 따라서 움직이는 이미지를 만들수 있어요


추천 비추천

3

고정닉 1

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
2872 설문 연예인 안됐으면 어쩔 뻔, 누가 봐도 천상 연예인은? 운영자 24/06/17 - -
4691 공지 국산 상업용 알만툴 게임 정리 1 [8] 알갤러(222.237) 23.10.15 2581 29
3364 공지 알만툴 마이너 갤러리 공지 [5] XP기본타이틀갤로그로 이동합니다. 22.09.11 2271 28
4120 공지 [자주 묻는 질문] 뉴빈데 알만툴 뭐 사야할까요? [16] XP기본타이틀갤로그로 이동합니다. 23.05.17 5625 42
5701 💬일반 겜 맵 제작 gpt로 만드는 사람 있어? [4] 알갤러(14.50) 06.17 123 0
5700 💬일반 특정 전투에서만 도망이 무조건 성공하게 하려면 어떻게 해야할까? [1] 반물질반바지갤로그로 이동합니다. 06.17 70 0
5699 🗣️소 용궁배 알만툴 대제전 - 세번째 부문 일부 공개! 알갤러(180.68) 06.17 64 3
5698 💬일반 던전 유기하니까 마음이 편하다 ㅇㅇ갤로그로 이동합니다. 06.17 58 1
5697 💬일반 XP 시절 병맛게임 많이 해봐서 그런가 [3] ㅇㅇ갤로그로 이동합니다. 06.16 96 6
5696 ❓질문 XP 한글패치 어떻게 해야됨?......... [1] 알갤러(119.192) 06.16 61 0
5695 📊제작 알만툴 MV 8방향 이동 및 픽셀 이동 하는 방법 [1] 노마리갤로그로 이동합니다. 06.16 73 5
5691 💬일반 rpg maker 95 쓰는 사람 아무도 없냐 [2] 알갤러(223.39) 06.15 109 1
5690 ❓질문 mv 대화창 캐릭터 [3] 피퍼(114.200) 06.15 173 0
5689 💬일반 아악 던전 걍 유기마렵네 [6] ㅇㅇ갤로그로 이동합니다. 06.14 141 0
5688 💬일반 취미로는 알만툴만한게 없긴함 [2] ㅇㅇ(122.43) 06.14 251 11
5687 ❓질문 알만툴 다른 컴퓨터로 어떻게 옮기나요 [3] 알갤러(211.235) 06.14 126 0
5686 ❓질문 그런데 모두 전투매뉴 커스텀은 어떻게 하는거야? [5] ㅇㅇ(121.135) 06.14 128 1
5685 💬일반 그림 디엠의 모험록 하고 울었다. [5] ㅇㅇ(211.193) 06.14 242 11
5684 💬일반 탄막스테이지(彈幕Stage) 다운로드링크+플레이영상 vertex갤로그로 이동합니다. 06.14 90 8
5683 ❓질문 mv 8방향 이동 [4] 산드로볼타(114.200) 06.13 127 0
5681 ❓질문 적이 평타 쓸때마다 파워업 2 애니메이션을 지한테 재생하는데 [2] 반물질반바지갤로그로 이동합니다. 06.13 74 0
5680 💬일반 옛날과 다르게 인디게임 개발 환경이 [7] ㅇㅇ(45.94) 06.13 222 8
5679 ❓질문 전투메뉴 바꿀려고 하는데 이 코드만 어딨는지 아는 사람있음? [3] ㅇㅇ(121.135) 06.13 102 0
5678 💬일반 아라 펠이라는 2K JRPG 아는사람 [2] ㅇㅇ(211.193) 06.13 78 0
5677 ❓질문 특정 타일이 인게임에서만 안보이는데 뭐가 문제지? [3] 반물질반바지갤로그로 이동합니다. 06.13 66 0
5675 ❓질문 전투 메뉴 수정 관련해서 질문좀 [5] ㅇㅇ(121.135) 06.12 181 0
5674 ❓질문 mv 전투관련 질문있어요 [2] 알갤러(1.223) 06.12 91 1
5673 🗣️소 [그랑기뇨르 서바이벌]챕터 2 제작 근황을 올려봅니다. [2] 프랑도르갤로그로 이동합니다. 06.12 186 10
5672 💬일반 던전을 9개를 만들어야하는데 이제 2개만듬 [2] ㅇㅇ갤로그로 이동합니다. 06.12 116 1
5671 💬일반 bakin은 써본사람있냐 ㅇㅇ(223.39) 06.12 102 1
5670 💬일반 알만툴 mv 강의해주실 분 구해봅니다. 페이 드립니다. [11] 알갤러(121.184) 06.12 182 1
5669 💬일반 틀딱 아조시 행복하다 [2] 알갤러(1.221) 06.12 145 2
5668 ❓질문 mv에서 아이템 카테고리를 비활성화 하는 방법은 없을까 [2] 알갤러(211.172) 06.12 106 0
5667 🎨제작 픽쳐로 만든 다이얼? 자물쇠 시낵스갤로그로 이동합니다. 06.12 82 0
5666 ❓질문 VX Ace쓰는데 줌 인 줌 아웃하는 스크립트 어떻게 사용하나요? [4] ㅇㅊㅂ갤로그로 이동합니다. 06.11 96 0
5665 📊제작 세세하게 이동속도를 조절하는 방법 [2] 노마리갤로그로 이동합니다. 06.11 177 10
5664 💬일반 세월이 흐를수록 시대의 존재가 사라진 느낌이다 [5] ㅇㅇ(122.43) 06.11 238 4
5663 ❓질문 mv 그림자 자동생성 끄는 방법 없음? [2] 반물질반바지갤로그로 이동합니다. 06.11 104 0
5662 💬일반 질문은 있는데 답변만 삭제된경우는 뭐냐 [2] ㅇㅇ(126.33) 06.11 122 1
5661 ❓질문 타이틀 버튼 어떻게 바꾸나요? [1] 알갤러(39.121) 06.10 122 1
5660 💬일반 직접 그림이랑 도트 그리는 사람들 존경한다 진짜 [2] 알갤러(59.22) 06.10 208 1
5659 💬일반 유나이트 쓰시는 분 업나영 [3] 알갤러(223.39) 06.10 128 1
5658 ❓질문 이거 커스텀 스탯 만드는데 도움되는 영상이나 글은 없나? [3] ㅇㅇ(121.135) 06.10 120 3
5657 💬일반 뉴비 mv살려는데 번들로 사야됨? [1] ㅇㅇ갤로그로 이동합니다. 06.10 88 0
5656 💬일반 아트가 개빡시네 [4] ㅇㅇ갤로그로 이동합니다. 06.10 209 3
5655 🗣️소 용궁배 알만툴 대제전 - 두 번째 부문 일부 공개! 알갤러(180.68) 06.10 111 5
5654 💬일반 글삭튀 심리 [4] 알갤러(58.123) 06.10 321 14
5653 📊제작 알만툴 원하는 정보 쉽게 찾는 법 [4] 노마리갤로그로 이동합니다. 06.10 242 12
5652 📊제작 RPG MAKER MV/MZ 스크립트 명령어 모음 노마리갤로그로 이동합니다. 06.10 167 10
5651 🎨제작 알만툴 뉴비 1일차 [3] 2diamondcantwin갤로그로 이동합니다. 06.10 154 5
5650 💬일반 핑프, 글삭이 절반이 넘노 [2] ㅇㅇ(180.71) 06.10 191 8
5649 ❓질문 다른 버전 에셋 법적 관련 질문 [2] 알갤러(123.214) 06.09 101 1
5647 💬일반 겜만들기 진짜 뒤지게오래걸리네 언제완성될지 감도안잡힘 [3] ㅇㅇ갤로그로 이동합니다. 06.09 197 0
5646 💬일반 입문 하려는데 mv, mz 둘중에 머가 더 좋음? [3] ㅇㅇ(118.235) 06.09 133 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2