私はAction Script 3とCS5.5でこのゲームを作っています。あなたがしようとしているのは、飛行中に小惑星を避けることです。私は太陽系外の惑星をバックグラウンドでゲーム中ずっと画面の下に移動させることが涼しいと思った。あなたがそれらを渡す飛行しているように見えるようにすること。私がこれをしたのは、毎秒各フレームのy座標に5を加えたことです。 y座標が600(画面の一番下)に達すると、私は同じことをする新しい惑星を追加します。何らかの理由で、かつて私は土星に行きました。土星は早く来て、天王星もそうでした。何が起こっているのか分かりませんでした。私は良い時間のためにこれに不満を持っています。ここに問題があると思う部分があります。Actionscript 3のif文を駄目にしましたか?
パブリック関数onTick(timerEvent:TimerEvent):ボイド {
earth.PlanetMovement(5);
if (earth.y==600)
{
mars.PlanetsStart(300, -100);
addChild(mars);
levels=levels+5;
}
mars.PlanetMovement(5);
if (mars.y==600)
{
jupiter.PlanetsStart(300,-150);
addChild (jupiter);
levels=levels+10;
}
jupiter.PlanetMovement(5);
if (jupiter.y==600)
{
saturn.PlanetsStart(300,-155);
addChild (saturn);
levels=levels+20;
}
saturn.PlanetMovement(5);
if (saturn.y==600)
{
uranus.PlanetsStart(300,-160)
addChild (uranus);
levels=levels+25;
}
uranus.PlanetMovement(5);
PlanetMovement、及びPlanetsStartは惑星クラスの二つの機能です。もっと情報が必要な場合は教えてください。
編集:私はさらに説明する必要があります。 PlanetsStartは、各ムービークリップの開始座標を持つ関数です。だから、地球が600のy座標に達すると、火星は(300、-100)で始まります。その後、画面に追加されます。 levelsは、各fpsのスコアを上げる変数です。 PlanetMovementは、各ムービークリップが各フレームレートでどのくらい移動するかを表します。私が> =を使用するとスコアが上がりすぎます。
これはまさに起こります。地球はそれが想定される場所に現れます。その後、火星は時間通りに上がる。それで何らかの理由で土星が火星の真ん中に現れ、木星が現れます。この後、土星は天王星を現わせる底に達する。その後、木星が底に到達し、すべてがうまくいく。土星が表示され、次に天王星が順番に
ええ、私は知っています。私が> =だった場合、レベルは5,10、および25だけ引き上げられます。レベルは、各フレームごとに高さを上げる変数です。もし私がそれをしたら、スコアは狂ったほど高くなるだろう。また、もし私がそれをしたら、それは映画クリップの火星、木星、土星、およびウラヌスを追加し続けます。私はちょうど600でそれを持っているので、それはその座標に達したときに1つしか作成されません。 – TyroneBiggums
600を使用している場合は、600に達する倍数で増やすことを確認しなければなりません。つまり、上記の増分155,160 ...は600の値をスキップして条件を満たしません。 – loxxy