메뉴 건너뛰기

창조도시 기록보관소

언어 RGSS/스프라이트문제와 키입력 문제.....

2005.07.17 16:38

『연금술사』 조회 수:498

RGSS도 언어니까......
괜찮겠지....








#==============================================================================
# ■ Scene_Titlename
#------------------------------------------------------------------------------
#  타이틀네임을 처리하는 클래스입니다 ※제작자 : 『연금술사』
#==============================================================================

class Scene_Titlename
  #--------------------------------------------------------------------------
  # ● 메인 처리
  #--------------------------------------------------------------------------
  def main
    # 타이틀 그래픽을 작성
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title("Titlename")
    # 타이틀 BGM 를 연주
    Audio.me_play("Audio/ME/015-Mystery01")
    # BGS 의 연주를 정지
    Audio.bgs_stop
    # 트란지션 실행
    Graphics.transition(45, "Graphics/Transitions/015-Diamond01")
    # 메인 루프
    loop do
      # 게임 화면을 갱신
      Graphics.update
      # 프레임 갱신
      update
      # 화면이 바뀌면 루프를 중단
      if $scene != self
        break
      end
    end
    # 트란지션 준비
    Graphics.freeze
    # 타이틀 그래픽을 해방
    @sprite.bitmap.dispose
    @sprite.dispose
  end
  #--------------------------------------------------------------------------
  # ● 프레임 갱신
  #--------------------------------------------------------------------------
  def update
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      $scene = Scene_Map.new
  return
    end
  end
end


제가 만든 "타이틀네임"스크립트 입니다. 참고로 말하자면, 이거 만드는데 3시간 걸린(1시간 반씩 2일) 100% 자작입니다. 아무튼, 맵에서 이벤트 스크립트로 $scene = Scene_Titlename.new 를 사용하면 트랜지션효과가 되면(다이아몬드1) Titlename이라는 그림이 뜨게 만들었습니다. "미스터리" ME를 연주하고, Bgm을 멈추게 하는 효과도 넣봤습니다(Game_Temp에 있더라구요 ㅇㅂㅇ). 해보시면 알겠지만, 효과음(ME)도 들리고, 트랜지션도 되고, 그래픽 업데이트도 됩니다. 여기까진 순조롭게 되나....

문제는 아랫부분!
보시면 아시겠지만, C버튼이 눌렸을 경우에, 맵 화면으로 전환되게 해 놨는데, 그게 안된다는 거빈다......
원인은 아직 불명. 다른 씬에서는 그냥 전환 되는데....혹시 몰라서 B버튼을 조건을 해보기도 했으나.....
역시 안됩니다....

그리고, 아직 제가 모르는 부분은 이것! "업데이트 메소드 부분을 x초(10x 프레임)동안 금지 시킨후,
x초가 지나면 실행 가능하게" <- 이 방법이 있다면 알려주시길.......혹은 자동으로 씬이 바뀐다거나.....
이렇게 하는 이유는, ME와 트랜지션이 있기 때문입니다. ME나 트랜지션이 끝나지도 않았는데 씬이 바뀌면 어섹하니까, 몇초후에 자동으로 전환되거나, 몇초후에 키 입력이 가능하게 만드는게 필요합니다.....
그리고, 제가 만든 그래픽은, 검은 바탕에 글씨가 있는 겁니다. 제가 생각한 아이디어는, 애초에 확대시킨후, 조금씩 줄어들고, 어느정도 줄어든후(x초후 로 계산)부터 천천히 줄어드는것입니다......
줄어드는것은 알고 있지만(무의미효과 스크립트를 반대로 하면...), 애초에 확대시키는 것이라던가,
몇초 후 부터 천천히 줄어드는 것은 잘 모르므로.......

* 그래픽이 축소되는 것 : 무의미 연출 스크립트로 연구를 해봤습니다.

for i in 0..64
        @sprite.x += 32 #위치
        @sprite.y += 28 #위치
        @sprite.zoom_x -= 0.1
        @sprite.zoom_y -= 0.1
        @sprite.opacity += 5
        Graphics.update
      end

이런식으로 하면 되더라구요(y 좌표는 제 그래픽 기준입니다). 이게 축소시키는
스크립트.......해보시면 아시겠지만.....엄청난 속도로 축소를 합니다....
0..64 를 0..1로 바꿔보니 10% 정도 느려진것 같긴 한데........그래도 엄청난 속도로
축소됩니다.......위치를 -로 하고, zoom을 +로 하면 천천히 확대되다가 사라집니다.
사라지는건 opacity를 -로 놨을때 확대와 함께 점점 흐려지는것으로 생각됩니다.
아무튼, 40분동안 연구를 해봤지만 답이 안나옵니다......