Defold 游戏开发笔记 03

Defold 游戏开发笔记 03_第1张图片
Defold

路线编辑器这两天进度不错,加好了一些基本的功能,可以画出路线,调整点的位置,删掉不要的点等。


Defold 游戏开发笔记 03_第2张图片
編輯器畫面

除了点出路线,现在也可以按下 [play] 来看一下怪物在顺着路线移动时到底是不是顺畅,其实最理想就是可以有个曲线模式,用曲线作为路线,但 go.animate 并没有这个支持,暂时只好多放几个点来模拟。


Defold 游戏开发笔记 03_第3张图片
移動測試

在测试路线时,要用 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 "!还好吧,知道了以后就可以小心点了。

你可能感兴趣的:(Defold 游戏开发笔记 03)