0

サイズに応じて船の力が変わるように、このコードを設定しました。

function activateFly(ship, event)
    if(size == 0) then
        ship:applyForce(0, -2.5, ship.x, ship.y)
        print("FLY SIZE 0")     
    elseif(size == 1) then
        ship:applyForce(0, -2.3,ship.x, ship.y)
        print("FLY SIZE 1")
    elseif(size == 2) then
        ship:applyForce(0, -2.0, ship.x, ship.y)
        print("FLY SIZE 2")
    elseif(size == 3) then
        ship:applyForce(0, -0.8, ship.x, ship.y)
        print("FLY SIZE 3")
    end
end

これは、さまざまなサイズすべてに対して無限の if-else ステートメントを作成する必要があることを意味します。私が求めているのは、保存されているサイズ変数を取得し、それに何らかの数値を掛けて、力を正しく設定できるコードがあるかどうかです。そうすれば、これらすべてのステートメントを書く必要がなくなります。

4

1 に答える 1

4

このようなことを意味しますか?

local forceMap = {
    [0] = -2.5,
    [1] = -2.3,
    [2] = -2.0,
    [3] = -0.8,
}

function activateFly(ship, event)
    ship:applyForce(0, forceMap[size], ship.x, ship.y)
    print("FLY SIZE "..size)
end

サイズから力を計算する方法がある場合は、マッピング テーブルの使用を避け、代わりに数学を使用できます。

于 2013-08-02T13:57:55.717 に答える