yumeの日記: Unity学習 #8 2D Visibility 2
2D Visibility
●頂点の数を数えて、座標をとる。
・Start関数ですべてのPolyWallから、頂点座標リストpolyPointsを取得する。
・他のGameObjectを探すにはいくつか方法があるが、tagをもとに複数のGameObjectを探す場合は GameObject.FindGameObjectWithTag(string tag);
例えば"PolyWall"タグのオブジェクトを探すなら
GameObject[] polyWalls = GameObject.FindGameObjectsWithTag("PolyWall");
のようにする。
取得したpolyWallsの、スクリプトの変数などをとりたい。
Unityスクリプトもまたコンポーネントなので、ここでは前回作った「PolygonWall」スクリプトを取得する。
PolygonWall hisScript = polyWalls[0].GetComponent();
のようにすれば、PolygonWallスクリプト型で変数がとれる。
外部からも値を取れるように、polyPoints変数を
public List PolyPoinits { private set; get; }
のように書き直す。
List endPointsリストにすべての頂点座標を追加する。
endPoints.AddRange(hisScript.PolyPoinits);
これで、リストendPointsにはすべての頂点の座標が入ることになる。はずだ。
一旦動かすと、狙い通りの挙動になっているように見える。
衝突しなかった場合の線も表示してみよう。あと部屋の四隅の座標にもrayを飛ばす。
お、それっぽくなってきたぞ。
物理学は難しい (スコア:0)
3Dゲームだと当然物理学なんかの知識が必要になるのですがそれを敬遠してゲームを作ってない私。
作るより遊ぶほうが楽しいからというのもありますけども。
念のため (スコア:0)
タグは定数で。
タグ自体をまとめたクラスを作るか関連したクラスで定義するかは方針次第。
定数を参照した定数も定義できるので両方というのもアリ。