RMVXA

화면 밖의 이벤트가 주인공에게 접근하게 만드는 방법

by 여줄가리 posted Oct 27, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
VX Ace 질문 드립니다. 도움 주시면 감사하겠습니다.

화면 밖의 몬스터는 '근접한다'로 설정해도 쫓아오지 않는데
어디서 왜 그런 버그가 있는지 이해를 못하겠습니다. 스크립트를 봐도 잘...
몬스터가 화면에 없어도 알아서 주인공을 쫓아오게 할 순 없을까요?



플레이어에게 다가간다의 정의 부분입니다.
def move_type_toward_player
    if near_the_player?
      case rand(20)
      when 0..17;  move_toward_player
      when 18;     move_random
      when 19;     move_forward
      end
    else
      move_toward_player #move_random ->near_the_player가 아니라도 다가가게 했습니다.
    end
  end

플레이어에게 가까이 있느냐의 정의 부분입니다.
def near_the_player?
    sx = distance_x_from($game_player.x).abs
    sy = distance_y_from($game_player.y).abs
    sx + sy < 100 #20 -> 바꿔봤습니다.
  end

def move_toward_player
    move_toward_character($game_player)
  end

  def move_toward_character(character)
    sx = distance_x_from(character.x)
    sy = distance_y_from(character.y)
    if sx.abs > sy.abs
      move_straight(sx > 0 ? 4 : 6)
      move_straight(sy > 0 ? 8 : 2) if !@move_succeed && sy != 0
    elsif sy != 0
      move_straight(sy > 0 ? 8 : 2)
      move_straight(sx > 0 ? 4 : 6) if !@move_succeed && sx != 0
    end
  end
#이건 무슨 뜻인지 잘 모르겠군요...

def move_straight(d, turn_ok = true)
    @move_succeed = passable?(@x, @y, d)
    if @move_succeed
      set_direction(d)
      @x = $game_map.round_x_with_direction(@x, d)
      @y = $game_map.round_y_with_direction(@y, d)
      @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
      @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
      increase_steps
    elsif turn_ok
      set_direction(d)
      check_event_trigger_touch_front
    end
  end
#혹시나 이것도 넣어봤는데 이건 문제가 없겠죠..?

아무래도 move_toward_character나 move_straight에 문제가 있는 것 같은데
이걸 변형시켜서 화면 밖의 몬스터가 쫓아오게 하고 싶습니다.
아니면 여길 변형시켜도 소용없고 스크립트를 따로 짜야 하는지....
아니면 아예 안 되는 건지... 궁금합니다.
답변해주시면 감사하겠습니다.