前提・実現したいこと
今敵のスポーン座標を決める作業をしていまして元の座標の近くにツリーがあったらその近くに敵を生成、なければランダムに設定した座標に生成するということをCanvasの中で実装しようとしましたが上手く行かず困っています。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
public class Enemyspown : MonoBehaviour { public static Vector2 spownPos2; private Vector2 enemyPos; GameObject[] trees; RectTransform m_RectTransform; float dis = 0.0f; float l_dis; Vector2 randomPos; Vector2 lefttop = new Vector2(178.0f, 132.0f); Vector2 rightbottom = new Vector2(259.0f,-146.0f); // Use this for initialization void Start () { //この座標をゲームプレイの初期スポーンにする //spownPos2 = gameObject.transform.position; m_RectTransform = GetComponent<RectTransform>(); //ランダムの変数 float ramX = Random.Range(lefttop.x, rightbottom.x); float ramY = Random.Range(lefttop.y, rightbottom.y); //ランダムの座標 randomPos = new Vector2(ramX, ramY); } // Update is called once per frame void Update () { //******************敵と一番近い木を探す処理***************** //オブジェクトの座標 enemyPos = gameObject.transform.position; //ツリータグを探す trees = GameObject.FindGameObjectsWithTag("SpownSelectTree"); //エネミーに一番近いツリーのタグを探す for (int i = 0; i < trees.Length; i++) { l_dis = Vector2.Distance(enemyPos, trees[i].transform.position); if (dis == 0.0f || dis > l_dis) { dis = l_dis; } } //*********************************************************** //*********敵の元の座標の近くに木があったらその近くにポジションを設定、 //なければランダム(G、Hエリア内)にポジションを設定********* //移動(トランスフォームだとシーンビューとゲームビューで移動量が変わる可能性があるため) float x = m_RectTransform.anchoredPosition.x; float y = m_RectTransform.anchoredPosition.y; //木のとなりの座標 x = l_dis + 30.0f; y = l_dis + 30.0f; //m_RectTransform.anchoredPosition = new Vector2(x, y); //m_RectTransform.anchoredPosition = randomPos; //ツリーと敵の距離がdis以下だったらその近くに座標を移動 if (dis <= 30.0f) { gameObject.transform.position = new Vector2(x, y); //enemyPos = new Vector2(x, y); enemyPos = gameObject.transform.position; } //でなければランダムに設定した数値に座標がいく else { gameObject.transform.position = randomPos; enemyPos = gameObject.transform.position; } //************************************************************ //********スポーンセレクトシーンで決めた座標をゲームプレイシーンの敵の座標に反映する********** //移動した座標を現在の座標に変換 m_RectTransform.anchoredPosition = new Vector2(x, y); //現在の座標 spownPos2 = new Vector2(x, y); //******************************************************** } }
試したこと
ランダムの数値を変えたりしたのですが座標がおかしくなってしまいます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/13 10:15