void Start() { mater = GetComponent <Renderer>().material; ogColor = mater.color; ownBuildingCheck = gameObject.GetComponent <BuildingCheck>(); snapManager = GameObject.FindGameObjectWithTag("SnapManager").GetComponent <SnapManager>(); }
void pre_build_check() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitinfo; // MeshCollider collider = GetComponent<MeshCollider> (); MeshCollider collider = tile_map.GetComponent <MeshCollider> (); //MeshRenderer renderer = GetComponent<MeshRenderer> (); if (collider.Raycast(ray, out hitinfo, Mathf.Infinity)) { Vector3 local_position = transform.InverseTransformPoint(hitinfo.point); Debug.Log("local position: " + local_position); Vector3 tile_position = new Vector3(Mathf.Floor(local_position.x), local_position.y + 0.01f, Mathf.Floor(local_position.z)); Debug.Log("tile_position: " + tile_position); //game_object.SetActive(true); //Vector3 current_tile = new Vector3( hitinfo.point.x / //game_object.transform.position = tile_position; building_cursor.transform.position = tile_position; //game_object.GetComponent<MeshRenderer> ().material.color = Color.green; //if (BuildingCheck.can_build (tile_position, tile_map.GetComponent<TileMap>().tile_info_, game_object.GetComponent<Building> () ) ) if (BuildingCheck.can_build(tile_position, tile_map.GetComponent <TileMap>().tile_info_, building_cursor.GetComponent <Building> ())) { building_cursor.GetComponentInChildren <MeshRenderer> ().material.color = Color.green; //game_object.GetComponentInChildren<MeshRenderer> ().material.color = Color.green; } else { building_cursor.GetComponentInChildren <MeshRenderer> ().material.color = Color.red; //game_object.GetComponentInChildren<MeshRenderer> ().material.color = Color.red; } if (Input.GetMouseButton(0)) { if (game_object.GetComponentInChildren <MeshRenderer> ().material.color == Color.green) { //build Building building = game_object.GetComponent <Building>(); for (int x = 0; x < building.size_x; ++x) { for (int y = 0; y < building.size_y; ++y) { Vector2 pos = new Vector2(tile_position.x + x, tile_position.z + y); if (tile_map.GetComponent <TileMap>().tile_info_.ContainsKey(pos)) { TileInfo info = tile_map.GetComponent <TileMap>().tile_info_ [pos]; info.building = game_object; } } } //free game_object game_object = Instantiate(game_object); } } } else { //renderer.material.color = Color.green; } }
void pre_build_check() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hitinfo; // MeshCollider collider = GetComponent<MeshCollider> (); MeshCollider collider = tile_map.GetComponent <MeshCollider> (); //MeshRenderer renderer = GetComponent<MeshRenderer> (); if (collider.Raycast(ray, out hitinfo, Mathf.Infinity)) { Cursor.visible = false; Vector3 local_position = transform.InverseTransformPoint(hitinfo.point); if (building_cursor == null) { building_cursor = Instantiate(building_prefab, this.transform); attach_arrow(); } //Debug.Log ("local position: " + local_position ); Vector3 tile_position = new Vector3(Mathf.Floor(local_position.x), local_position.y + 0.01f, Mathf.Floor(local_position.z)); //Debug.Log ("tile_position: " + tile_position ); //game_object.SetActive(true); //Vector3 current_tile = new Vector3( hitinfo.point.x / //game_object.transform.position = tile_position; building_cursor.transform.position = tile_position; //game_object.GetComponent<MeshRenderer> ().material.color = Color.green; //if (BuildingCheck.can_build (tile_position, tile_map.GetComponent<TileMap>().tile_info_, game_object.GetComponent<Building> () ) ) if (BuildingCheck.can_build(tile_position, tile_map.GetComponent <TileMap>().tile_info_, building_cursor.GetComponent <Building> ())) { set_building_cursor_color(Color.green); //if ( building_cursor.GetComponentInChildren<MeshRenderer> () != null ) //building_cursor.GetComponentInChildren<MeshRenderer> ().material.color = Color.green; //game_object.GetComponentInChildren<MeshRenderer> ().material.color = Color.green; } else { set_building_cursor_color(Color.red); //if ( building_cursor.GetComponentInChildren<MeshRenderer> () != null ) //building_cursor.GetComponentInChildren<MeshRenderer> ().material.color = Color.red; //game_object.GetComponentInChildren<MeshRenderer> ().material.color = Color.red; } if (Input.GetMouseButton(0)) { if (building_cursor.GetComponentInChildren <MeshRenderer> ().material.color == Color.green) { //build build_at(tile_position); nav_mesh_surface.BuildNavMesh(); } } } else { Cursor.visible = true; //renderer.material.color = Color.green; } }