赞 | 0 |
VIP | 10 |
好人卡 | 49 |
积分 | 10 |
经验 | 22958 |
最后登录 | 2020-8-1 |
在线时间 | 2161 小时 |
Lv3.寻梦者 酱油的
- 梦石
- 0
- 星屑
- 1030
- 在线时间
- 2161 小时
- 注册时间
- 2007-12-22
- 帖子
- 3271
|
我近來正好在寫這個功能的腳本,當然因為時間問題還沒有弄好。這是半成品的思路(這個思路是kaza提供的,應該是和澤是一個人吧--a):
- #========================
- class Scene_Map
- TANCE = 1 #动画ID
- end
- #========================
- #Game_Event========================
- class Game_Event
- attr_reader :event
- end
- #Game_Map========================
- class Game_Map
- def tance
- for event in @events.values
- if event.event.name.split(/,/)[0] == "shine"
- $scene.shine.push event.event if $scene.is_a?(Scene_Map)
- end
- end
- end
- end
- class Game_Player < Game_Character
- alias tance_increase_steps increase_steps
- def increase_steps
- tance_increase_steps
- if $scene.is_a?(Scene_Map)
- $scene.check_tance
- end
- end
- end
- #Scene_Map========================
- class Scene_Map
- attr_accessor :shine
- def initialize
- @shine = []
- end
- alias tance_main main
- def main
- $game_map.tance
- @tance_wait = 0
- check_tance
- tance_main
- end
- alias tance_update update
- def update
- if @tance
- if Input.trigger?(Input::C)
- end
- if @tance_wait == 0
- #$game_player.animation_id = TANCE #靠近目标事件动作
- $game_map.events[@tance].animation_id = TANCE
- @tance_wait = 60
- else
- @tance_wait -= 1
- end
- if Input.trigger?(Input::C)
- $game_map.events[@tance].start
- @tance = nil
- end
- #=================================================
- end
- tance_update
- end
- def check_tance
- for event in @shine
- if (($game_player.x - event.x) ** 2 + ($game_player.y - event.y) ** 2) <= event.name.split(/,/)[1].to_i ** 2
- @tance = event.id
- else
- @tance = false
- end
- end
- end
- end
复制代码 核心其實很簡單,就是根據角色名字是否含有shine這個字符串來判斷事件類型,再根據 , 號後的第一個數字來判斷有效范圍。也就是把事件名字設定爲這樣:
|
|