私は学生で、Unity3Dエンジンで学びます。私は最初の小さな2Dゲームに取り組んでいます。spawerのゲームロジック
私はいくつかのゲームロジックについて助けが必要です。具体的には、ゲームオブジェクトを4列に合理的に生成する方法。このゲームでは、スクリーンの上から落ちるゲームオブジェクトを生成します。私は画面をカバーする4つの列を計算します。この4つの列にランダムにゲームオブジェクトを生成します。しかし、ゲームプレイは良くありません。私はより良いやり方をアドバイスする必要があります。
私のアイデアは、1つまたは複数のゲームオブジェクトを行内に生成し、列を合理的に回転させます。私はすでに行にオブジェクトを生成します。しかし、スイッチ列のロジックを作成する方法はありますか?スイッチ(今最初の列、今第三、今第一及び第四など)のようなもの
私のスポーン方法があります:
// Use this for initialization
void Start()
{
// width of one colums
widthColum = ScreenCalc.DivideScreenInColums(colums);
...
}
public void StartSpawn()
{
spawn = StartCoroutine(Spawn());
}
IEnumerator Spawn()
{
yield return new WaitForSeconds(1.5f);
time = GameController.instance.time;
while (true)
{
// Random select from prefabs
GameObject geometryObject = spawnObjects[Random.Range(0, spawnObjects.Length)];
// X is middle of random picked columns
float x = ScreenCalc.GenerateColumPos(geometryObject, colums);
Vector3 spawnPosition = new Vector3(x, transform.position.y, 0.0f);
Quaternion spawnRotation = Quaternion.identity;
// Random object in row, will be spawned in one column
int rnd = Random.Range(1, 6);
// Spawn random count game object in one row
for (int i = 0; i < rnd; i++)
{
GameObject temp = Instantiate(geometryObject, spawnPosition, spawnRotation);
// Get Sprite render
SpriteRenderer sr = temp.GetComponent<SpriteRenderer>();
// Change color of game object
sr.color = colors[Random.Range(0, colors.Length)];
// Get script for falling down
FallingDown fl = temp.GetComponent<FallingDown>();
// Increase fall
fl.fallSpeed += 0.1f;
// Wait between spawns
yield return new WaitForSeconds(Random.Range(0.35f, 1.0f));
}
yield return new WaitForSeconds(1.0f);
}
私はより多くのスポーン方法、各列のいずれかを実行しようとしたランダムな待ち時間を生成します時間。しかし、論理が悪かったのは、あまりにも多くのオブジェクトが生成されているか、低すぎて、1つの列を互いに衝突させたためです。
ここに私のアイデアの写真があります。絵で
あなたは4列に分割したスクリーンを表示することができ、すべての列は、産卵の位置です。私はランダムにオブジェクトのスポーンを切り替える方法をゲームロジックで手助けする必要があります。
たとえば、列1の行に3つのオブジェクトを生成します。次に、列2に1オブジェクトを生成します。次に、列2に5つのオブジェクトを生成し、同時に列4に2つのオブジェクトを生成します。
私はそれをより良く説明する方法がわかりません。私は自分の英語を残念に思っています。
。 – ryeMoss
あなたは '// Increase fall'コードは実際にはあまり効果がありません。新しく生成されたオブジェクト*の落下速度を0.1倍に設定しているので、次にこの行が実行されたときに再度触れることはありません。 – Draco18s