조회 수 2934 추천 수 1 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

이미 아시는 분들은 양해를 부탁드릴게요.. 혹시 스크립트를 쓰는게 어려워서 손도 못 대신 분들을 위해 이렇게 짧게(?) 나마 작성하는 글입니다.


사실 '팁'이라고 한 이유는 기존 스크립트에 두세줄만 추가/수정 하면 되기 때문입니다.


전 루비 스크립트의 루비도 모르는 사람입니다. 그래서 지금 제작하고 있는 게임도 스크립트를 쓸 줄 몰라 100%이벤트로만 땜빵식으로 하고 있지요. -_-;;


근데 C언어나 자바 언어 같은 프로그래밍 언어는 다룬 적은 있습니다. 그래서 루비 스크립트에도 도전을 마침내 한 번 해봤죠.


준비물은 두 개 입니다. 하나는 스크립트 파일, 하나는 로고 파일입니다. 제가 사용한 스크립트는 첨부해 드릴게요. 구글링해서 구했습니다.


먼저 스크립트 파일을 열면


  unless $DEBUG # 디버그(테스트 플레이)가 아닌 경우만 표시

    # 개시시의 효과음아니개를 연주

    # 스프라이트 작성

    @sprite = Sprite.new

    # 타이틀 로고 읽기

    @sprite.bitmap = RPG::Cache.title("Logo.jpg")  # 타이틀 로고의 화상

    # 표시 위치를 화면 중앙으로 설정

    @sprite.x = (640 - @sprite.bitmap.width) / 2

    @sprite.y = (480 - @sprite.bitmap.height) / 2

    # 불투명도 MAX(완전 표시)

    @sprite.opacity = 255

    # 트란지션 실행

    Graphics.transition(40)  # FPS를 만지작거려는 없는 경우, 이것으로 2초용명이 됩니다

    # 2초간 그대로 표시한 후, 2초에 페이드아웃

    for i in 0..160

      @sprite.opacity =240 - (i - 40) * 6 if i >= 40

      Graphics.update

    end

    # 스프라이트를 해방

    @sprite.dispose

    # 트란지션 준비

    Graphics.freeze

  end


이렇게 있습니다. 이 부분을 F11을 눌러 Scene_Title 스크립트의


$game_system = Game_System.new


이 바로 밑에 넣어주세요. 일단은 게임 시스템 개체를 생성하자마자 로고를 띄우기 위해 준비한다고 이해하시면 되겠습니다.


첨부한 스크립트에서 @sprite.bitmap = RPG::Cache.title("Logo.jpg") 의 "Logo.jpg"를 Graphics/Title에 가져온


개인 로고 파일의 이름을 넣어주면 되겠습니다. 가령 저의 경우엔 


@sprite.bitmap = RPG::Cache.title("KEnt.png")


자, 이대로 실행하면 게임 시작할 때 로고 화면이 뜨고 메인이 뜹니다 (야호! 성공?) 근데 아뿔싸, 게임중 게임오버를 당하거나 해서 메인으로 돌아올려고 하면 로고가 다시 뜨는 걸 보실 수 있습니다. (-_-;;)


문제가 어디서 발생하냐 하면 로고를 화면에 이미 한 번 띄웠는지 게임은 알지 못하기 때문입니다. 그래서 다음과 같이 수정해줍시다.


unless $logo_count

    $logo_count = true

    # 개시시의 효과음아니개를 연주

    # 스프라이트 작성

    @sprite = Sprite.new

    # 타이틀 로고 읽기

    @sprite.bitmap = RPG::Cache.title("KEnt.png")  # 타이틀 로고의 화상

    # 표시 위치를 화면 중앙으로 설정

    @sprite.x = (640 - @sprite.bitmap.width) / 2

    @sprite.y = (480 - @sprite.bitmap.height) / 2

    # 불투명도 MAX(완전 표시)

    @sprite.opacity = 255

    # 트란지션 실행

    Graphics.transition(40)  # FPS를 만지작거려는 없는 경우, 이것으로 2초용명이 됩니다

    # 2초간 그대로 표시한 후, 2초에 페이드아웃

    for i in 0..160

      @sprite.opacity =240 - (i - 40) * 6 if i >= 40

      Graphics.update

    end

    # 스프라이트를 해방

    @sprite.dispose

    # 트란지션 준비

    Graphics.freeze

  end


$logo_count는 불리언 타입의 전역 변수입니다. Scene_Title의 main 메서드를 호출할 때 전역 변수가 참인지 거짓인지 확인 후 참이 아니면 아직 화면에 띄우지 않았다는 말이죠. 그리고 로고를 띄웠으면 띄웠다고 표시를 해줍니다. 여기서 개인 프로그래밍 경험상 전역 변수가 아니라 static, 정적 변수라고 하는게 더 알맞을 것 같습니다. 전역 변수라도 클래스 밖으로 나가면 일반적인 프로그래밍 언어에선 인식을 못하거든요


그러면 이 $logo_count 변수는 대체 어디에서 만들어져 있느냐, 하면 Main 스크립트에 있습니다.


begin

  # 트란지션 준비

  Graphics.freeze

  #로고 화면 표시 카운터

  $logo_count = false

  # 씬 오브젝트 (타이틀 화면)를 작성

  $scene = Scene_Title.new

  # $scene 가 유효한 한계 main 메소드를 호출한다

  while $scene != nil

    $scene.main

  end

  # 페이드아웃

  Graphics.transition(20)

rescue Errno::ENOENT

  # 예외 Errno::ENOENT 를 보충

  # 파일을 오픈할 수 없었던 경우, 메세지를 표시해 종료한다

  filename = $!.message.sub("No such file or directory - ", "")

  print("파일 #{filename} 가 발견되지 않습니다.")

end


이렇게 해주시면 게임 켤 때에만 로고 화면을 보실 수 있습니다.
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7443 1
172 중급강의실 이벤트에 지도넣기 (그림의 표시) 5 물판 2014.05.07 2289 1
171 중급강의실 외부 캐릭터 그래픽과 타일셋 그래픽 게임 내에 적용하기 Xanadu 2013.10.20 2247 0
170 중급강의실 예시를 통한 레이어의 사용 3 맵만드는중.. 2014.02.14 1465 3
169 중급강의실 엽여비의 야매강좌- VXA : 기초강좌-VXA의 이해 3 엽여비소엽 2015.10.09 870 0
168 중급강의실 액알강의[3] - 주석을 통한 설정 1 file 비밀소년 2006.07.21 5333 4
167 중급강의실 액알강의[2] - 일어서기위해 비밀소년 2006.07.30 5183 3
166 중급강의실 액알강의[1] - 베틀러 비밀소년 2006.08.07 8465 7
165 중급강의실 아이템을 새로 만들어내고싶어요! 2 하프 2013.12.01 1406 0
164 고급강의실 아이템 한번에 받기  운 2014.08.24 1154 0
163 중급강의실 아오오니처럼 따라오는 이벤트 만들기 5 빙냥이 2013.12.11 4361 3
162 중급강의실 식량이벤트 3 주섬주섬 2014.02.28 1339 1
161 중급강의실 스킬 주문서를 만들어봅시다! 2 neopop 2014.03.24 1232 0
160 중급강의실 스위치를 이용한 상자 만들기 강좌 4 리븐 2013.12.28 1402 0
159 중급강의실 상자를 끌고 밀어보자! 19 지루 2014.01.25 1675 0
158 초급강의실 변수를 이용한 식물 재배 3 file MoonJ 2017.05.28 3094 2
157 고급강의실 배틀창 이름 체력 레벨 좌표 변경하기 1 Seed 2014.06.19 1039 0
156 중급강의실 발소리 강좌 ( + 주석포함 ) 7 빙냥이 2013.12.10 1697 1
155 중급강의실 반도의 흔한 이벤트 강좌(간략화)-1- 1 RPG란무엇인가? 2015.11.11 788 0
154 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
153 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2083 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)