前提・実現したいこと
Unityのサイトで、LevelGeneratorのコードに関して分からない点があるので質問させていただきます。
主に分からないコードは、
Vector3 pos = new Vector3(x - width / 2f, 1f, y - height / 2f);
x - width / 2f や y - height / 2f のコードです。
これはどんな処理をしているのかということです。
これに関連して分からない点が3点くらいあります。
あと、
if (Random.value > .7f) { }else{ }
に関しても疑問点があります。
試したことと該当のソースコード
実際にプロジェクトをダウンロードして動かしてみました。
・質問1。
public int width = 10; public int height = 10
これはいったい何を元に設定している値でしょうか?
プロジェクトを開いてみると、実際には両方とも20に設定してあって、10だと生成される範囲が狭くなりました。
・質問2。
質問1とも関連する内容ですが、Groundオブジェクトのwidthやheightの値はどのように知ることができますか?
通常、キューブを大きく変形した場合、Scaleでその大きさがわかると思っていたのですが、
GroundのScaleは1のままです。
これはUnity側でなく、何か別の3D作成ソフトで作られたからScaleが1ということでしょうか?
だとすると、3D作成ソフトで作られたオブジェクトのwidthとheightの大きさ(メッシュの大きさ)を知る術はないのでしょうか?
今回はたまたまBox Colliderがメッシュと同じ大きさでアタッチされていたので、
Sizeが(22, 1.32, 22)であろうという想定はつきましたが、
Box Colliderが付いてなくて、Scaleも1だった場合、メッシュのサイズはどのように知ることができるのでしょうか?
また、今回、Sizeが(22, 1.32, 22)であったとしても、質問1のwidthとheightが20の値に設定されているので、合っていないので疑問です。
・質問3。
冒頭のコードです。
Vector3 pos = new Vector3(x - width / 2f, 1f, y - height / 2f);
x - width / 2f や y - height / 2f のコードですが、なぜ2で割って、xやyから引いているのでしょうか?
試しに、
Vector3 pos = new Vector3(x, 1f, y);
のコードを実行してみたら、ずれが生じました。
なぜ、ずれが生じるのでしょうか?
・質問4。
if (Random.value > .7f) { }else{ }
に関してです。
0.7未満になることが必ずしも保証されているわけではない気がするのですが、
このコードでは場合によっては、プレイヤーが生成されないことってあり得ますか?
一応、何回かゲームを実行して試した結果では毎回プレイヤーは生成されていました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/08/26 06:40