路线编辑器这两天进度不错,加好了一些基本的功能,可以画出路线,调整点的位置,删掉不要的点等。
除了点出路线,现在也可以按下 [play] 来看一下怪物在顺着路线移动时到底是不是顺畅,其实最理想就是可以有个曲线模式,用曲线作为路线,但 go.animate 并没有这个支持,暂时只好多放几个点来模拟。
在测试路线时,要用 factory.create 建立一个敌人的物件,在建立时本是可以顺手设立一些新物件的属性,但发现在这个情况下是不能用 table 的,以下这样子就会出错:
local mid_points = {}
local pos = vmath.vector3(0, 0, 0)
local f = "#factory_enemy"
local id = factory.create(f, pos, nil, { path = mid_points }) -- 這里會出錯
而解决方法,是建立好物件后,再用 msg.post 把相关的 table 传给新物件,新物件的脚本在自己的 on_message 里接收就可以:
local id = factory.create(f, pos, nil)
msg.post(id, "setup", { path = mid_points })
本来每段"段落"之间移动的时间是固定的,测试发现这样子移动速度就变得不均匀了,改为用两个点的距离和一个速度的设定来算回所需的时间就行了:
local movement = movements[move_pointer]
self.target_pos.x = movement[1]
self.target_pos.y = movement[2]
local pos = go.get_position()
local distance = vmath.length(pos - self.target_pos)
local move_time = distance/movement[3]
因工作需要一直是用C/C++,开始用 lua 后被深深被它的自由奔放所感动,变量不用提前声明,想它是什么类型变量就是什么,但那天就被正正被这自由所累,花了不少时间除虫:
local buttonPlay = gui.get_node("play")
if gui.pick_node(buttonPLay, action.x, action.y) then
msg.post("editor_controller#editor", "play")
end
加了 [play] 按钮后,相关事件一直没有被触发,后来查了半天,才发现有个字母的大小写搞错了!"buttonPLay"应该是"buttonPlay "!还好吧,知道了以后就可以小心点了。