スクリプト/クリックによるマップ移動

最終投稿者:User icon mini taki 更新:2014/09/03 22:43:44
タイトルからはどんなものか分かりづらいのでサンプルを
http://rmake.jp/games/26908/limited_play
ユーザーID : qwer
パスワード : qwer

作成にあたっては次のページを参考にしています
クリックに関して
ティラミスさん作
スクリプト/指定した範囲をクリックしているか判定する
画像の表示に関して
aoihikawaさん作
スクリプト/Rmakeで自由なゲームをつくろう / 第02回 画面にキャラクターを描画する

スクリプトはこんな感じです
<開始スクリプト>
setVariable("genzaiiti",0)
setVariable("mapno",0)
setVariable("idousaki",createArray())

def idou()
#範囲内にいるかどうかのフラグの初期化
  setFlag("inside",false)

#画像の表示の下準備↓
  id1=createSprite(256187)
  id2=createSprite(256194)
  id3=createSprite(256201)
  id4=createSprite(256241)

  setSpriteRect(id1,0,0,512,384,0,0,512,384)
  setSpriteRect(id2,0,0,96,96,0,0,96,96) 
  setSpriteRect(id3,0,0,96,96,0,0,96,96) 
  setSpriteRect(id4,0,0,96,96,0,0,96,96) 

  setSpritePosition(id1, 0, 0)
  setSpritePosition(id2, 80, 150)
  setSpritePosition(id3, 300, 70)
  setSpritePosition(id4, 390, 250)

  setSpriteZOrder(id1, 0)
  setSpriteZOrder(id2, 1)
  setSpriteZOrder(id3, 1)
  setSpriteZOrder(id4, 1)
#画像の表示の下準備,ここまで↑

#画像の表示
  setCanvasVisible(true)
  drawCanvas()

  speak("移動先をクリックしてください")

#マウスの入力を調べるためのループ↓
 #入力の取得を始めます
startInput()

#ループし続けるように変数を設定します。
loop = true



#loop変数がtrueの間はループし続けます。
while loop

  #入力が入っているかどうか調べます。
  while hasInput()
    #内部にたまっている入力を処理対象とします。
    takeInput()
#移動先の画像をクリックした場合の処理↓
    if isMouseDown() #マウスのボタンが押されている場合
      #マウスの位置を取得します。
      pos = getMousePosition()

      x=pos[0]
      y=pos[1]
      if x>=80&&x<=176&&y>=150&&y<=246
        setVariable("mapno",2)
        getVariable("idousaki")[0]=37899
        getVariable("idousaki")[1]=7
        getVariable("idousaki")[2]=9

      elsif x>=300&&x<=396&&y>=90&&y<=186
        setVariable("mapno",3)
        getVariable("idousaki")[0]=37901
        getVariable("idousaki")[1]=7
        getVariable("idousaki")[2]=10


      elsif x>=390&&x<=486&&y>=250&&y<=346
        setVariable("mapno",4)
        getVariable("idousaki")[0]=37900
        getVariable("idousaki")[1]=7
        getVariable("idousaki")[2]=9

      end

      if getFlag("inside")
        if getVariable("genzaiiti")==getVariable("mapno")
          case speakWithSelect(2,"はい","いいえ","移動をやめますか?")
            when 0
               loop = false
               deleteAllSprite()
               setCanvasVisible(false)
            when 1
          end
        else
          case speakWithSelect(2,"はい","いいえ","移動しますか?")
            when 0
               loop = false
               playSound(82829)
          warp(getVariable("idousaki")[0],
getVariable("idousaki")[1],getVariable("idousaki")[2] )
            when 1
          end
        end          
       end
#移動先の画像をクリックした場合の処理、ここまで↑

#マウスが移動先の画像の所に来た場合にポップアップして効果音を鳴らしている部分↓
      elsif isMouseMove() #マウスが動いた場合
      #マウスの位置を取得します。
      pos = getMousePosition()
      x=pos[0]
      y=pos[1]
      if x>=80&&x<=176&&y>=150&&y<=246
        
       if getFlag("inside")!=true
          playSound(82828)
          setSpriteScale(id2, 1.3, 1.3)
          drawCanvas()
          setFlag("inside",true)
        end

      elsif x>=300&&x<=396&&y>=90&&y<=186
        
       if getFlag("inside")!=true
          playSound(82828)
          setSpriteScale(id3, 1.3, 1.3)
          drawCanvas()
          setFlag("inside",true)
        end

      elsif x>=390&&x<=486&&y>=250&&y<=346
        
       if getFlag("inside")!=true
          playSound(82828)
          setSpriteScale(id4, 1.3, 1.3)
          drawCanvas()
          setFlag("inside",true)
        end

      else #マウスが移動先の画像から離れた場合に、元の大きさに戻している部分

        if getFlag("inside")==true
          setSpriteScale(id2, 1, 1)
          setSpriteScale(id3, 1, 1)
          setSpriteScale(id4, 1, 1)
          drawCanvas()
          setFlag("inside",false)
        end
       end

    end
  end
#マウスが移動先の画像の所に来た場合にポップアップして効果音を鳴らしている部分、ここまで↑
  #入力がないときに無駄に処理をしないように30ミリ秒waitを入れます。
  waitTime(30)

end

#入力の取得を終了します。
endInput()
  
end


それから各マップに次のイベントが作ってあります(プレイヤーのいるマップを識別するためです)
・自動スタートです
<有効条件>
getVariable("genzaiiti")!=2

<内容>
setVariable("genzaiiti",2)

数字はマップに対応するものを自分で適当に決めてください
サンプルの場合、家:2、城:3、 森:4と言った感じです

・指定した範囲内をクリックしたかどうか
・画像の表示
がメインでおまけがいろいろくっついている形です
スクリプトの解説は、また後日
わかりやすい日本語で解説してくれる方募集(切実)
質問などありましたらコメントにお願いします

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。