私が作成しようとしているゲームには、プレイヤーが触れることができるオブジェクトがあります。これらのオブジェクトに触れると、ステージがクリアされます。複数のオブジェクトがあるため、すべてを配列内に配置し、配列からタッチされたオブジェクトを削除して、配列が空になったときにのみstageclearを呼び出すようにする必要があります。これは私が現在使用しようとしているコードです:
if event.phase == "ended" then
for i=#objArray,0,-1 do
if(#objArray ~= 0) then
objArray[i] = table.remove(objArray)
else
storyboard.gotoScene("ClearStage", fade, 400)
timer.pause(timerCount)
end
end
end
これに伴う問題は、配列がループを1回通過すると、すぐに0になることです。また、私はobjArray内の値であるべきではないと思います。代わりにタッチされたオブジェクトである必要がありますが、それを実装する方法がわかりません。私は次のようなことをする必要があります:
if objArray > 0 then
--remove touched object from array
else
--go to clear
end
私は配列とループの作業を始めたばかりなので、まだ非常に混乱しているので、誰かがこれを手伝ってくれることを願っています。配列が0より大きいときに、タッチしたオブジェクトだけを削除するように配列に指示するにはどうすればよいですか?
実際、気にしないでください。私は自分のコードを微調整しながら解決策を見つけました。これが私が最終的に得たコードです:
if(#objArray ~= 0) then
objArray[0] = table.remove(objArray)
if(#objArray == 0) then
storyboard.gotoScene("ClearStage", fade, 400)
timer.pause(timerCount)
end
end
基本的に、私はforループをもう必要とせず、次のように0インデックスを使用しました(私の理解が正しければ):objArray[0]を使用してオブジェクトを配列から削除します。