これはしばらくの間グーグルで行ってきましたが、何を探したらいいのか分からないので、みなさんにいい人に助けを求めるつもりです。ユニティ:手順的に生成されたマップ上に敵を生み出す
私は最初の試合の手続きレベルのクリエイターに取り組んでいます。コードの一部はここのチュートリアルに触発されていますが、自分でできる限り多くのことをしようとしています。とにかく、ここで私は、すべての地獄のように、おそらく醜いしている、との助けが必要なコードです、と私は私が後を助ける必要なものを説明します:
だから、Vector3 RandomPosition()
{
int randomIndex = Random.Range (0, gridPositions.Count);
Vector3 randomPosition = gridPositions [randomIndex];
gridPositions.RemoveAt (randomIndex);
return randomPosition;
}
void LayoutObjectAtRandom (GameObject[] tileArray, int minimum, int maximum)
{
int objectCount = Random.Range (minimum, maximum);
for (int i = 0; i < objectCount; i++)
{
Vector3 randomPosition = RandomPosition();
GameObject tileChoice = tileArray [Random.Range (0, tileArray.Length)];
Instantiate (tileChoice, randomPosition, Quaternion.identity);
}
}
void spawnTomcats() // Figure out a way to use the RandomPosition to exclude used tiles in enemySpawn
{
int enemyCount = (int)Mathf.Log (level, 2f);
for (int i = 0; i < enemyCount; i++)
{
Vector3 enemySpawn = new Vector3 (columns + (Random.Range (0, 5)), rows - (Random.Range (7, 14)), 0f);
GameObject tileChoice = enemyTiles [Random.Range (0, enemyTiles.Length)];
Instantiate (tileChoice, enemySpawn, Quaternion.identity);
}
public void SceneSetup (int level)
{
BoardSetup();
InitialiseList();
spawnTomcats();
LayoutObjectAtRandom (impassableObjects, impassableCount.minimum, impassableCount.maximum);
Instantiate (heatCat, new Vector3 (columns - 8, rows - (Random.Range(7, 14)), 0f), Quaternion.identity);
}
}
、私は必要なものを選択する「のVector3 enemySpawn」のためであります指定されたパラメータ内のタイルですが、SceneSetup関数のimpassableObjectのインスタンス化ではまだ使用されていません。すべてが産卵部分で機能しますが、私の "Tomcats"は時には攻撃できないオブジェクトの上に産まれます。私はいくつかの方法でRandomPosition()メソッドを統合しようとしましたが、実際には成功しませんでした。
私の変数のような情報が必要な場合は、教えてください!私はまだ初心者なので、どれくらい必要なのかは分かりません。
すべてのアドバイスをいただければ幸いです。
ジョエルクロスビー。
もし私の答えが助けになるなら、それを受け入れられたものとしてマークすることを忘れないでください。私に知らせてください、そして私は精巧にします –
私はしなかったし、忘れないでしょう。ちょうどそれが正常に動作するように、私は同時に私のソリューションを投稿することができます。あなたの投稿は、私自身でそれを解決するための十分な視点を与えてくれたので、私はそれに感謝します。 –