질문과 답변

Extra Form

    # B 버튼이 밀렸을 경우
    if Input.trigger?(Input::B)
      # 캔슬 SE 를 연주
      $game_system.se_play($data_system.cancel_se)
      # 맵 화면으로 전환해
      $scene = Scene_Map.new
      return
    end
    # C 버튼이 밀렸을 경우
    if Input.trigger?(Input::C)
      # 파티 인원수가 0 명으로, 세이브, 게임 종료 이외의 커멘드의 경우
      if $game_party.actors.size == 0 and @command_window.index < 4
        # 버저 SE 를 연주
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # 커멘드 윈도우의 커서 위치에서 분기
      case @command_window.index
      when 0  # 아이템
        # 결정  SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 아이템 화면으로 전환해
        $scene = Scene_Item.new
      when 1  # 스킬
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 2  # 장비
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 3  # 스테이터스
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 스테이터스 윈도우를 액티브하게 한다
        @command_window.active = false
        @status_window.active = true
        @status_window.index = 0
      when 4  # 세이브
        # 세이브 금지의 경우
        if $game_system.save_disabled
          # 버저 SE 를 연주
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 세이브 화면으로 전환해
        $scene = Scene_Save.new
      when 5  # 게임 종료
        # 결정 SE 를 연주
        $game_system.se_play($data_system.decision_se)
        # 게임 종료 화면으로 전환해
        $scene = Scene_End.new
      end
      return
    end

 

메뉴는 이렇게 하잖아요?

 

그런데 메뉴(커맨드)를 눌렀을때 말고 누르지 않고 그냥 올려두었을때(??) 효과 지정은 안될려나요?

Who's 코아 코스튬

?

안녕하세요 ^^

WebEngine 입니다. ^^


Game 제작에서 Web 제작으로 옮겼어요 ^^

http://www.webengine.co.kr/

Comment '3'
  • ?
    녹색주머니 2010.10.21 01:37

    Input Class에 대한 설명을 하자면....

     

    .press?

     

    누르고 있을 경우에 인식되는 겁니다.

    만약 메뉴오픈을 press로 만들면 1frame단위로 계속 열릴겁니다 -_- ;;;

     

    .trigger?

     

    1회에 한하여 인식합니다.

    계속 누르고 있어도 메뉴오픈은 1번만 이루어지죠.

     

    그리고 단순히 손이 올라갔을 때의 감지라면.... 키보드가 아니라 터치패드가 아닐지 -_- ;;;;

    아마 press쪽을 말씀하시는 걸거라고 생각됩니다.

     

    단지 press의 문제가 1frame당 1회씩 인식을 하기 때문에

     

    a = 0

    loop do

      Input.update

      if Input.press?(Input::C)

        a += 1

     end

    end

     

    라는 식을 생성하게되면 a는 1 frame당 1씩증가.

    즉, 사람의 눈으로는 포착하기 힘든 속도로 수가 올라가 버립니다.

    메뉴의 이동이라던가, 결정이라던가에서는 이것에 문제를 많이 받죠.

     

    그렇기 때문에 trigger를 쓰거나 press를 쓰되 어느정도 딜레이를 거는 경우가 많습니다만....

     

    딜레이를 거는 경우는 섯불리 잘못했다간 키입력자체가 둔화되므로 유의하시는 편이 좋습니다.

  • ?
    녹색주머니 2010.10.21 13:14

    그건 Input::UP / DOWN / LEFT / RIGHT를 조건문에 추가하면 될겁니다.

     

    위에보니 ~~.index의 수가 선택지의 위치를 결정하는 것같은데.... 조건에 따라 +-해주면 되겠죠.

  • ?
    코아 코스튬 2010.10.21 01:57

    제가 말하는건,,

    C나 Enter 누르기 전에 키보드로 움직일수 있자나요?

    그러면 움직여서 색깔 변한거 (윈도우 스킨에 의해) 그 부분에 대해 뭔가 알려주는 기능을 넣을려구요,,

    그런데 잘 모르겠어서,,


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12392
Board Pagination Prev 1 ... 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 Next
/ 82