1

画面をタップしたままにすると、プレイヤーが Y 方向にスピードを上げていくという問題があります。

私が望むのは、プレーヤーが画面をタップして (そして浮かんでいる間)、一定の速度で (速くなることなく) 上昇することです。

フロート速度とタッチイベントの関数は次のとおりです。

function activateJets(ship,event)
    ship:applyForce(0, -1.0, ship.x, ship.y)
    print("run")
end

function touchScreen(event)
    print("touch")
    if event.phase == "began" then
        ship.enterFrame = activateJets
        Runtime:addEventListener("enterFrame", ship)
    end
    if event.phase == "ended" then
        Runtime:removeEventListener("enterFrame", ship)
   end    
end

Runtime:addEventListener("touch", touchScreen)

これが意味をなさない場合は申し訳ありません。ここに私が欲しいものの一般的な考えがあります:

  • プレーヤーが画面に触れる (そして保持する)
  • その後、オブジェクトは一定の速度で浮き上がります (速度の増加なし)
  • プレイヤーがタッチを離す
  • オブジェクトは正常にドロップします
4

1 に答える 1

0

関連する物理学により、それを行うことができなくなります。つまり、船に一定の力を加えています。ニュートンの法則 (物理ライブラリによってシミュレートされます) によれば、これは一定の加速を意味し、速度が直線的に増加することを意味します。

必要な動作 (実際の物理学とは一貫性がありません) は、目標速度への瞬時の加速であり、速度の変動はありません。shipSetLinearVelocity()したがって、関数内で船の速度を一定の値に設定するだけで十分activateJetsです。もちろん、タッチが終了したら、速度をゼロにリセットする必要があります。

于 2013-10-13T19:31:28.343 に答える