public void FromTopLeftPathFind() { //Arrange MazeHolder mzh = new MazeHolder(10, 10); mzh.Mazes[7, 9].type = MazeObjectType.Block; mzh.Mazes[7, 8].type = MazeObjectType.Block; mzh.Mazes[6, 7].type = MazeObjectType.Block; mzh.Mazes[6, 6].type = MazeObjectType.Block; Vector3 aim = new Vector3(5, 0, 5); Vector3 start = new Vector3(10, 0, 9); Vector3 dir = Vector3.one; //Act mzh.CalculateToPointDirection(start, aim, ref dir); //Assert Assert.Less(dir.x, 0); Assert.LessOrEqual(dir.y, 0); }
public void OutOfBoundsStart() { //Arrange MazeHolder mzh = new MazeHolder(10, 10); mzh.Mazes[7, 9].type = MazeObjectType.Block; mzh.Mazes[7, 8].type = MazeObjectType.Block; mzh.Mazes[6, 7].type = MazeObjectType.Block; mzh.Mazes[6, 6].type = MazeObjectType.Block; Vector3 aim = new Vector3(6, 0, 6); Vector3 start = new Vector3(15, 0, 11); Vector3 dir = Vector3.one; //Act mzh.CalculateToPointDirection(start, aim, ref dir); //Assert Assert.Fail(); }
public void FromBootmRightPathFind() { //Arrange MazeHolder mzh = new MazeHolder(10, 10); mzh.Mazes[3, 0].type = MazeObjectType.Block; mzh.Mazes[3, 1].type = MazeObjectType.Block; mzh.Mazes[3, 2].type = MazeObjectType.Block; mzh.Mazes[3, 3].type = MazeObjectType.Block; Vector3 aim = new Vector3(5, 0, 5); Vector3 start = new Vector3(0, 0, 1); Vector3 dir = Vector3.one; //Act mzh.CalculateToPointDirection(start, aim, ref dir); //Assert Assert.Greater(dir.x, 0); Assert.GreaterOrEqual(dir.y, 0); }
// Update is called once per frame void Update() { plane_obj.transform.position = _ppos; outer_objects_material.SetVector("_HeroPos", _ppos); outer_plane.GetComponent<MeshRenderer>().material.SetVector("_HeroPos", _ppos); mazeHolder.UpdateMaze(_ppos); swarm.PopulateMazeObjects(mazeHolder.Mazes); plane_obj.GetComponent<MeshRenderer>().material.SetTextureOffset("_MainTex", new Vector2(_ppos.x/game_plane_width , _ppos.z/game_plane_height)); outer_plane.GetComponent<MeshRenderer>().material.SetVector("_MainOffset", new Vector4(_ppos.x / game_plane_width , _ppos.z / game_plane_height,0,0)); release_do_timer += Time.deltaTime; if (release_do_timer > release_distante_objects_time) { release_do_timer = 0; swarm.ReleaseDistantedObjects(_ppos, game_plane_width / 2f + 5.5f); } enemies_spr_timer += Time.deltaTime; if (enemies_spr_timer > EnemiesSpawnRate) if (swarm.AliveEnemies < MAX_ENEMIES_ALIVE) { enemies_spr_timer = 0; swarm.SpawnEnemieByMaze(mazeHolder.Mazes,3,EnemiesStats[Mathf.Clamp(GAME_LEVEL,0,EnemiesStats.Count-1)]); } path_find_timer+= Time.deltaTime; if (path_find_timer > PATH_FIND_RATE) { path_find_timer = 0; for (int i = 0; i < swarm.EnemiesPool.Count; i++) if(swarm.EnemiesPool[i].gameObject.activeSelf) { mazeHolder.CalculateToPointDirection(swarm.EnemiesPool[i].transform.position, _ppos, ref swarm.EnemiesPool[i].MoveDirection); } } }