2016-12-21 15 views
0

コロナSDK(Lua)でゲームを作成していますが、エラーが発生しています。コロナフォーラムで多くのサポートを受けていないため、ここに来ることにしました。私は最近プロジェクトに取り組んでいました。ユーザーは1発の弾を発射するために銃を押す必要がありました。私は今弾丸を発射できないという同じ問題を抱えていました。だから私は質問を掲示し、私は自分の問題を解決する答えを得た。私はもうプロジェクトに取り組みたくなかったので、私はそれを削除しました。プロジェクトをやりたかったのですが、ごみ箱からプロジェクトを復元したとき、game.luaファイルには私を助けたコードはありませんでした。私は別の質問を投稿しましたが、多くの助けを得なかったのでここに来ました。コロナSDKエラー

ユーザーが銃に触れたときに弾丸が発射されないという問題があります。私は以前の解決策を試しましたが、多くの弾丸を発射していましたが、そのエラーがどこから来ているのかわからなかったので、その問題を解決できませんでした。ここに私のコードです:

game.lua(このコードは、弾丸を発射するが、それは私だけ一度に1を発射したい、一度に4を発射。またどのように私は速度を変更することができます。。。):

local bullet = {} 
local bCounter = 1 

local function shootBullet(event) 
if event.phase == "ended" then 
    bullet[bCounter] = display.newImage("bullet3.png" , minigun.x, minigun.y, 6, 6) 
    bullet[bCounter].value = bCounter 
    physics.addBody(bullet[bCounter], "dynamic") 
    bullet[bCounter].gravityScale = 0 
    bullet[bCounter].myName = "bullet" 
    bullet[bCounter]:setLinearVelocity(0, -200) 
    bCounter = bCounter + 1 

end 
end 


function scene:show(event) 
minigun:addEventListener("touch", shootBullet) 
end 

function scene:hide(event) 

end 

function scene:destroy(event) 
local sceneGroup = self.view 

end 

答えて

0

イベントリスナーの最後にreturn trueにアクセスしてください。イベントの伝播を停止し、複数回呼び出されるイベントリスナーの問題を解決するはずです。

+0

何も変更していません –

0

てみてください - あなたがealier行ったように、単にsetLinearVelocity関数を使用する弾丸の開始速度を変更したい場合は

function scene:show(event) 
    local phase = event.phase 
    if phase == "will" then 
     minigun:addEventListener("touch", shootBullet) 
    end  
end 

(テストタッチごとに弾丸が、私は、画像の代わりにrectsを使用します)。

+0

何も変更しませんでした。まだ一度に4つの弾丸を撃つ –

+0

それは今、2つの弾丸を撃つ –

+0

コードは正常に動作します。それは一つの弾を撃つ。 'print(" minigunにリスナーを追加する ")'を実行すると、minigunにリスナーを追加し、上記のメッセージが何回表示されるかをコンソールで監視することができます。あなたは1つの牧歌を見るべきです。そうでない場合は、ミニガンでどのようにシーンに行くのかを確認してください。あなたは 'gotoScene'を2度呼んでいます。 – ldurniat

関連する問題