조회 수 2932 추천 수 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 7373 1
32 고급강의실 RGSS 스크립트 강좌 입문 13 - 클래스(Class) 5 마니아 2013.09.16 2317 2
31 고급강의실 RGSS 스크립트 강좌 입문 12 - 연상 배열(Associative Array) 4 마니아 2013.09.16 1600 1
30 고급강의실 RGSS 스크립트 강좌 입문 11 - 배열(Array) 6 마니아 2013.09.16 1701 1
29 고급강의실 RGSS 스크립트 강좌 입문 10 - 그래픽 표시 4 마니아 2013.09.16 2183 0
28 고급강의실 RGSS 스크립트 강좌 입문 9 - 오브젝트(Object) 4 마니아 2013.09.16 1642 0
27 고급강의실 RGSS 스크립트 강좌 입문 7 ~ 8 - 함수(Function) 3 마니아 2013.09.16 1924 0
26 고급강의실 RGSS 스크립트 강좌 입문 6 - 루프(Loop) 2 마니아 2013.09.16 1586 0
25 고급강의실 RGSS 스크립트 강좌 입문 5 - 조건분기 4 마니아 2013.09.16 2131 0
24 고급강의실 RGSS 스크립트 강좌 입문 4 - 캐릭터 라인 4 마니아 2013.09.16 2274 1
23 고급강의실 RGSS 스크립트 강좌 입문 3 - 메서드(Method) 4 마니아 2013.09.16 1876 0
22 고급강의실 RGSS 스크립트 강좌 입문 2 - 수 3 마니아 2013.09.16 2256 0
21 고급강의실 RGSS 스크립트 강좌 입문 1 - 기초 개념 8 마니아 2013.09.16 4351 0
20 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
19 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2081 0
18 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
16 고급강의실 뮤's 실전 스크립팅 강좌 [1. 기초 문법 다지기 (상)] 6 마니아 2013.09.16 2351 0
15 고급강의실 RGSS2 강좌 1 비형랑 2012.10.01 2528 0
14 중급강의실 [RPGVX ACE] 소재규격과 강의수록 1 2 비형랑 2012.10.01 3273 0
13 초급강의실 [RPG VX ACE] 초심자강의 1 1 비형랑 2012.10.01 3168 2
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






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

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