디시인사이드 갤러리

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

갤러리 본문 영역

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

vertex갤로그로 이동합니다. 2024.05.18 19:52:29
조회 278 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 이번주 설문은 탈모 걱정 없어 보이는 머리숱 금수저 스타는? 운영자 25/07/14 - -
- AD 게임도 체력전! 보양식 먹고 힘내자~ 운영자 25/07/11 - -
4691 공지 국산 상업용 알만툴 게임 정리 1 [8] 알갤러(222.237) 23.10.15 4994 35
3364 공지 알만툴 마이너 갤러리 공지 [10] XP기본타이틀갤로그로 이동합니다. 22.09.11 3486 33
4120 공지 [자주 묻는 질문] 뉴빈데 알만툴 뭐 사야할까요? [17] XP기본타이틀갤로그로 이동합니다. 23.05.17 14971 48
7319 ❓질문 님들 뉴비인데요 [2] 알갤러(182.216) 07.13 123 1
7318 🗣️소 하꼬 스트리머 폐병원 탈출기! <고독방송> 인사드립니다! [2] LaPuTaGames갤로그로 이동합니다. 07.12 197 15
7317 💬일반 뉴비, 샘플맵 수정좀 했더니 투명벽 생기면서 이동 불가 [2] High갤로그로 이동합니다. 07.12 104 1
7316 ❓질문 MZ 보통 뉴비가 배우는데는 어느정도 걸림? [5] ㅇㅇ(175.120) 07.11 133 1
7315 🗣️소 텀블벅 신작 알만툴 [4] ㅇㅇ갤로그로 이동합니다. 07.11 204 2
7314 💬일반 게임 추천받고 싶은데 괜찮을까요 [3] 알갤러(118.235) 07.11 116 0
7313 💬일반 뉴비 손전등 만들었는데 뭔가 약간 좀 하자가 있는거같음 [2] High갤로그로 이동합니다. 07.11 120 2
7311 ❓질문 보편적으로 제일 많이 쓰는 알만툴 엔진은 뭐임? [8] 누오_057갤로그로 이동합니다. 07.10 145 0
7310 ❓질문 캐릭터 아래 이미지 배치할 수 있나요? [2] 알갤러(115.22) 07.10 117 1
7309 💬일반 독학으로 혼자 판매 가능한 에로게 만들만한감? [4] 알갤러(211.243) 07.10 164 0
7308 ❓질문 진짜 알만툴 첨 써보는데 [4] 니린키갤로그로 이동합니다. 07.10 155 1
7307 🎨제작 고3 알붕이 입시하면서 만드는겜 [3] 와장창갤로그로 이동합니다. 07.09 227 5
7306 📊팁 스팀에서 rpg maker mz dlc 무료 보는 방법 [1] 기초만올림갤로그로 이동합니다. 07.09 168 7
7305 ❓질문 MZ 운 스탯을 크리티컬 발동으로 바꿀수 있음? [1] ㅇㅇ(124.57) 07.08 78 0
7304 ❓질문 행님들 라벨을 쓰는 이유가 뭔가요??? [4] 알갤러(211.235) 07.08 125 1
7303 ❓질문 알만툴 mv 구매했는데 실행이 안됨 도와주세요 [2] 알갤러(175.127) 07.06 147 0
7302 💬일반 mz 하나 장만할 생각이다. [3] ㅇㅇ(180.67) 07.06 179 0
7300 ❓질문 MZ) 그림표시 관련 질문 [2] 알갤러(183.105) 07.04 154 1
7299 💬일반 알만툴 라이센스 질문해도 됨? [4] 알갤러(45.94) 07.03 189 0
7298 🎨제작 SRPG 시스템 완성 [6] 드리니갤로그로 이동합니다. 07.02 420 15
7297 ❓질문 (mz)적 선택에서 오류가 나는건 어떻게 해결하냐? [2] buntzbuntz갤로그로 이동합니다. 07.02 79 0
7296 ❓질문 MZ 실행오류 질문 [2] oo갤로그로 이동합니다. 07.02 123 0
7295 🎨제작 켈틱 매듭 문양들 vertex갤로그로 이동합니다. 07.02 103 2
7294 💬일반 쯔꾸르 한국어에서 외국어로 번역하는 건 어떻게 함? [1] ㅇㅇ(211.118) 07.01 169 0
7293 💬일반 스포) gaia's melody 에서 가장 인상깊었던 장면 [1] 애플망고_갤로그로 이동합니다. 07.01 117 1
7292 💬일반 리사같은 콤보시스템을 MZ에 이식하고 싶은데 졸라 힘들다 buntzbuntz갤로그로 이동합니다. 07.01 86 0
7290 💬일반 스포) gaia's melody 장면에 한국어 넣기 [2] 애플망고_갤로그로 이동합니다. 06.30 203 1
7289 💬일반 스토브에서 mz 구매하고 dlc는 스팀에서 구매해서 사용가능? [1] 알갤러(1.224) 06.30 125 0
7288 💬일반 일기 [2] ㅇㅇ갤로그로 이동합니다. 06.30 150 6
7287 ❓질문 MV나 MZ로 일기 시스템 만들 수 있음?? [6] 알갤러(175.205) 06.29 200 1
7286 ❓질문 플러그인은 어떤 AI가 제일 잘만드는거같음? [2] ㅇㅇ(175.119) 06.28 212 0
7285 ❓질문 알만툴로 이런 게임 만들 수 있음? [4] 알갤러(1.229) 06.28 334 0
7283 ❓질문 mz 랑 mv 중 뭐가 낫나염 [6] 알갤러(106.101) 06.27 276 0
7282 💬일반 라벨 이게 진짜 물건이네 인생의쉼표갤로그로 이동합니다. 06.26 228 3
7281 ❓질문 혹시 mz전용 플레이어 광원 플러그인있음? [3] ㅇㅇ(118.43) 06.26 105 0
7280 💬일반 할인 하루남았다 ㅇㅇ(175.119) 06.26 163 0
7279 💬일반 MZ 한글번역 어떰? [2] ㅇㅇ갤로그로 이동합니다. 06.26 182 0
7278 🎨제작 공포 호러 생존겜 제작중 [12] ㅇㅇㅇ(118.34) 06.24 639 19
7277 💬일반 액만툴 다시 만져보는데 이건 진짜 아니다 액만툴갤로그로 이동합니다. 06.23 186 3
7276 💬일반 rpg maker forum 터졌나요? [2] 알갤러(116.42) 06.23 167 0
7275 ❓질문 다들 광원효과는 어떻게 표현하시나요? [3] 알갤러(118.34) 06.23 131 0
7274 💬일반 회상방( 메모리얼 룸) 만드는 강의 있을까? [4] 알갤러(223.62) 06.23 159 0
7273 ❓질문 초보 클릭하면 이벤트 발동하거나 장면 전환하는 기능 [3] 알갤러(1.244) 06.23 103 0
7272 🎨제작 알만툴로 퀴즈 게임 만들기 ifeve갤로그로 이동합니다. 06.22 164 1
7271 🎨제작 [2K3]액알 몬스터 제작 1단계(JSON 데이터 참조/적용) [2] 늅늅이갤로그로 이동합니다. 06.22 129 6
7270 ❓질문 바킨툴 적 1인 또는 전체공격말고 2인공격같은건 안됨? [2] 알갤러(115.136) 06.22 108 0
7269 ❓질문 png 말고 png_는 뭐임 [1] 알갤러(58.231) 06.22 162 1
7268 ❓질문 주인공이 안 움직여요 [1] 알갤러(49.170) 06.22 125 1
7267 ❓질문 살려주세요 고수님들 [2] ㅇㅇㅇ(118.34) 06.21 143 1
7266 🎨제작 게임 컨셉아트 2 vertex갤로그로 이동합니다. 06.21 231 0
뉴스 오스틴 킴, 첫 단독 콘서트 ‘살롱 드 뮤직’ 비하인드 공개 “깜짝 신곡 예고” 디시트렌드 18:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2