私が見つけたのは、乱数を作成する方法でした。すごい。ただし、このソリューションは他の機能では機能しませんでした。乱数を作成するために、私は
_Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 4);
_
enemyWalk(){}と呼ばれる関数の内部;
ただし、これによりエラーが発生しました。
タイプ「UnityEngine.Random」には「Next」の定義が含まれておらず、タイプ「UnityEngine.Random」の拡張メソッド「Next」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)
ランダム整数ジェネレーターを関数から削除しても、このエラーは表示されません。この問題を解決するための解決策はありますか?
このコードを使用して、何もしていないときに敵が歩く方向(上、左、右、または下)を決定する整数をランダムに選択し、ランダムなダブルジェネレーターを使用して距離を決定することで、敵をさまようようにしたいと考えています。歩きます。ただし、enemyWalk(){};
が呼び出されるたびに生成される乱数が必要です。
Unity C#では、方法は次のとおりです
_Random.Range(minVal, maxVal);
_
nity Documentation-Random を参照してください。
このメソッドは、整数または浮動小数点引数のいずれかを受け入れます。 intsを使用する場合、minVal
はinclusiveであり、maxVal
はexclusiveの戻りランダム値です。あなたの場合は次のようになります。
_Random.Range(1,4);
_
Next(1,4)
の代わりに。
たとえば、フロートを使用する場合
_Random.Range(1.0F, 3.5F);
_
戻り値もfloatであり、この場合、minVal
とmaxVal
は包括的です。
簡単な解決策は、.NETのRandom
クラスを使用することです。これはたまたまSystem
名前空間にあります。
using System;
...
//Or System.Random without the using
Random randomDirection = new Random();
int directionChoice = randomDirection.Next(1, 5);
Unityを使用する場合は、Range
の代わりにNext
を呼び出します。
int directionChoice = randomDirection.Range(1, 5);
「max」はどちらの場合もexclusiveであることに注意してください。したがって、1〜4(4を含む)の値を返すには5を使用する必要があります。
ランダムに取得するにはfloat
:
Random.NextDouble(); //careful, this is between 0 and 1, you have to scale it
//Also, this one is exclusive on the upper bound (1)
Random.Range(1f, 4f); //max is inclusive now