Project1
标题:
如何实现角色接近有对话的npc,npc头上跳出talk标志
[打印本页]
作者:
鲜鲜兔
时间:
2010-9-10 14:50
标题:
如何实现角色接近有对话的npc,npc头上跳出talk标志
我是这么操作的
一、先在npc事件页进行变量操作,变量1=角色x坐标、变量2=角色y坐标
二、条件分歧:角色移动到npc附近一定区域,显示动画(出现talk标志的动画)
三、继续条件分歧:如果按下C键,执行对话内容
之后就是问题了,我走到npc附近时,确实有显示动画,但是当我按下空格键或回车键时,
对话不是按一下键就能跳出来,有时要按3、4下才出来,只有碰巧的时候按一下会有用,
这样感觉很怪。
是不是我哪里设置的不对呀,请各位大虾给点建议啊啊,感激不尽!!!!!!!
作者:
八云紫
时间:
2010-9-10 15:37
估计是处理速度上的问题吧~~~
并行的话,可能会这样。
LZ 可以用开关,变量先判断下按键,然后再条件分歧什么的,~~~
作者:
禾西
时间:
2010-9-10 15:53
我近來正好在寫這個功能的腳本,當然因為時間問題還沒有弄好。這是半成品的思路(這個思路是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這個字符串來判斷事件類型,再根據 , 號後的第一個數字來判斷有效范圍。也就是把事件名字設定爲這樣:
shine,6
作者:
lxdsh2009
时间:
2010-9-10 16:30
VX有这种脚本
好吧这是XP
作者:
fux2
时间:
2010-9-10 20:52
本帖最后由 fux2 于 2010-9-10 20:54 编辑
回复
鲜鲜兔
的帖子
给你开个门
http://rpg.blue/thread-133326-1-7.html
这里的范例公共事件里删掉下面一个脚本(上下2个一样),把上面的l=5改成l=1,把wait去掉,就可以判断主角是否在事件身边了,而且效率极高。
作者:
逸豫
时间:
2010-9-10 20:55
http://rpg.blue/forum.php?mod=viewthread&tid=133326
作者:
鲜鲜兔
时间:
2010-9-11 21:24
非常感谢各位的回帖,5楼和6楼的脚本真的很有用,多谢了。
不过现在又有个新问题了,和npc说完话,npc应该没有对话了,这时候npc头上却仍有
talk标志,我在想只要把npc的名字改成"EV"开头应该就没问题了吧,可是我不知道用脚
本怎么改事件名称 :dizzy:
麻烦各位指导一下,谢谢了!!
作者:
逸豫
时间:
2010-9-12 00:08
事件第三页脚本中写:
a = $game_map.events[@event_id]
def a.name=(v)
@name = v
end
a.name = "EV"
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1