2

我正在编写一个非常快速的迷你游戏,但我没有任何矢量实现。这就是我所拥有的:

local qx = manx
        local qy = many
        local px = bigenemyx
        local py = bigenemyy
        local vx = qx - px
        local vy = qy - py
        local mag = math.sqrt(vx^2 + vy^2)
        bigenemyx = bigenemyx + mag * speed * dt
        bigenemyy = bigenemyy + mag * speed * dt

bigenemy需要遵循manbigenemy只是从屏幕上消失。我已经为此编写了代码,并且(显然)在这方面的数学方面没有经验,感谢您的帮助-如果我没有想清楚,我深表歉意,我并没有真正坚持“速度更快,速度更快”!

4

2 回答 2

2

好吧,您在各个方向都使用“mag”值-这不好。尝试

    if(mag < 0.0001): mag = 1
    bigenemyx = bigenemyx + (vx/mag) * speed * dt
    bigenemyy = bigenemyy + (vy/mag) * speed * dt
于 2012-05-22T18:11:55.030 回答
1

你的问题在最后两行。无论如何,您都在将敌人朝 <1,1> 的方向移动。尝试:

bigenemyx = bigenemyx + vx/mag*speed*dt
bigenemyy = bigenemyy + vy/mag*speed*dt

所以你从 v 得到方向。

于 2012-05-22T18:11:01.970 回答