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

あなたの問題は最後の2行にあります。あなたは敵を <1,1> の方向に動かしています。試す:

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

したがって、v から方向を取得しています。

于 2012-05-22T18:11:01.970 に答える