示例#1
0
        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);
        }
示例#2
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();
        }
示例#3
0
        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);
            }
        }

    }