// Update is called once per frame void Update() { // m_Agent.destination = TragetPos; if (!updated_env) { myMapInfo = FindObjectOfType<CreateMap>(); mPlayerInfo = FindObjectOfType<PlayerController>(); myGridSize = myMapInfo.getGridSize(); myLocationOfFirstCube = myMapInfo.getFirstLocationOfCube(); myMap = myMakeCopyOf(myMapInfo.GetMyMap()); int rand_col = UnityEngine.Random.Range((int)0, (int)2); transform.position = myFindFirstRandomPlace(myMap, myLocationOfFirstCube, myGridSize, mPlayerInfo.transform.position, rand_col) + new Vector3(0f, transform.position[1], 0f); setTargetPos(transform.position - new Vector3(0f, this.transform.position[1], 0f), false); updated_env = true; } flag_hit_player = false; if (EnemyType == myEnemyType.NotFollowingPlayer) { float threshold = Mathf.Abs(EnemySpeed); bool flag_find_new_target = false; if ((this.transform.position - new Vector3(0.0f, transform.position[1], 0.0f) - TragetPos).magnitude < threshold) { flag_find_new_target = true; } else if (myUpdatedPath != null) { if (myUpdatedPath.Count == 0) { flag_find_new_target = true; } } if (flag_find_new_target) { int rand_pos = UnityEngine.Random.Range((int)0, (int)2); if (rand_pos == 0) TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, true) + new Vector3(0f, transform.position[1], 0f); else TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, false) + new Vector3(0f, transform.position[1], 0f); flag_update_path = true; } } if (flag_update_path) { if (EnemyType == myEnemyType.FollowingPlayer) { setTargetPos(FindObjectOfType<PlayerController>().transform.position, true);//get position of the agent } else { setTargetPos(TragetPos, false); } Vector3 pos1 = mPosToMapIndex(transform.position, myLocationOfFirstCube, myGridSize); pos1[0] = Mathf.Round(pos1[0]); pos1[2] = Mathf.Round(pos1[2]); Vector3 pos2 = TragetPos; myUpdatedPath = mFindPath(pos1, pos2, myUpdatedPath); flag_update_path = false; } if (EscapeTileBombPos[1] >= 0) { Vector3 dis_player_bomb = transform.position - EscapeTileBombPos; if (!(Mathf.Abs(dis_player_bomb[0]) < myGridSize[0] && Mathf.Abs(dis_player_bomb[2]) < myGridSize[2])) { EscapeTileBombPos[1] = -1; } } mMoveOnThePath(myUpdatedPath, myLocationOfFirstCube, myGridSize); checkBombHitEnemy(); }
// Update is called once per frame void Update() { if (!updated_env) { myMapInfo = FindObjectOfType <CreateMap>(); myGridSize = myMapInfo.getGridSize(); myLocationOfFirstCube = myMapInfo.getFirstLocationOfCube(); myMap = myMakeCopyOf(myMapInfo.GetMyMap()); int rand_col = UnityEngine.Random.Range((int)0, (int)2); this.transform.localScale = new Vector3(myGridSize[0] / 2, this.transform.localScale[1], myGridSize[2] / 2); transform.position = myFindFirstRandomPlace(myMap, myLocationOfFirstCube, myGridSize, rand_col) + new Vector3(0f, transform.position[1], 0f); setTargetPos(transform.position - new Vector3(0f, this.transform.position[1], 0f), false); updated_env = true; } if (EnemyType == myEnemyType.NotFollowingPlayer) { float threshold = Mathf.Abs(EnemySpeed); bool flag_find_new_target = false; if ((this.transform.position - new Vector3(0.0f, transform.position[1], 0.0f) - TragetPos).magnitude < threshold) { flag_find_new_target = true; } else if (myUpdatedPath != null) { if (myUpdatedPath.Count == 0) { flag_find_new_target = true; } } if (flag_find_new_target) { int rand_pos = UnityEngine.Random.Range((int)0, (int)2); if (rand_pos == 0) { TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, true) + new Vector3(0f, transform.position[1], 0f); } else { TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, false) + new Vector3(0f, transform.position[1], 0f); } flag_update_path = true; } } if (flag_update_path) { if (EnemyType == myEnemyType.FollowingPlayer) { } else { setTargetPos(TragetPos, false); } Vector3 pos1 = mPosToMapIndex(transform.position, myLocationOfFirstCube, myGridSize); pos1[0] = Mathf.Round(pos1[0]); pos1[2] = Mathf.Round(pos1[2]); Vector3 pos2 = TragetPos; myUpdatedPath = mFindPath(pos1, pos2, myUpdatedPath); flag_update_path = false; } mMoveOnThePath(myUpdatedPath, myLocationOfFirstCube, myGridSize); }
private void PlacePlayerOnMapAndGetInfo() { if (!flag_got_map_info) { planeInfo = FindObjectOfType<Playground>().gameObject; myMapInfo = planeInfo.GetComponent<CreateMap>(); m_enemy_i = myMapInfo.getEnemies(); myGridSize = myMapInfo.getGridSize(); myLocationOfFirstCube = myMapInfo.getFirstLocationOfCube(); myMap = myMapInfo.GetMyMap(); //Reduce player size if player size is bigger than grid size Vector3 player_size = this.transform.localScale; if (player_size[0] > myGridSize[0]) player_size[0] = myGridSize[0] - myGridSize[0] / 10; if (player_size[2] > myGridSize[2]) player_size[2] = myGridSize[2] - myGridSize[2] / 10; this.transform.localScale = player_size; this.transform.position = LocateFirstAvailableSpace(myMap, myLocationOfFirstCube, myGridSize) + new Vector3(0f, transform.position[1], 0f); //+new Vector3(this.transform.localScale[0] / 2, 0f, this.transform.localScale[2] / 2); flag_got_map_info = true; } }
// Update is called once per frame void Update() { if (!updated_env) { myMapInfo = FindObjectOfType<CreateMap>(); myGridSize = myMapInfo.getGridSize(); myLocationOfFirstCube = myMapInfo.getFirstLocationOfCube(); myMap = myMakeCopyOf(myMapInfo.GetMyMap()); int rand_col = UnityEngine.Random.Range((int)0, (int)2); this.transform.localScale = new Vector3(myGridSize[0]/2, this.transform.localScale[1], myGridSize[2]/2); transform.position = myFindFirstRandomPlace(myMap, myLocationOfFirstCube, myGridSize, rand_col) + new Vector3(0f, transform.position[1], 0f); setTargetPos(transform.position - new Vector3(0f, this.transform.position[1], 0f), false); updated_env = true; } if (EnemyType == myEnemyType.NotFollowingPlayer) { float threshold = Mathf.Abs(EnemySpeed); bool flag_find_new_target = false; if ((this.transform.position - new Vector3(0.0f, transform.position[1], 0.0f) - TragetPos).magnitude < threshold) { flag_find_new_target = true; } else if (myUpdatedPath != null) { if (myUpdatedPath.Count == 0) { flag_find_new_target = true; } } if (flag_find_new_target) { int rand_pos = UnityEngine.Random.Range((int)0, (int)2); if (rand_pos == 0) TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, true) + new Vector3(0f, transform.position[1], 0f); else TragetPos = myFindRandomPlace(myMap, myLocationOfFirstCube, myGridSize, false) + new Vector3(0f, transform.position[1], 0f); flag_update_path = true; } } if (flag_update_path) { if (EnemyType == myEnemyType.FollowingPlayer) { } else { setTargetPos(TragetPos, false); } Vector3 pos1 = mPosToMapIndex(transform.position, myLocationOfFirstCube, myGridSize); pos1[0] = Mathf.Round(pos1[0]); pos1[2] = Mathf.Round(pos1[2]); Vector3 pos2 = TragetPos; myUpdatedPath = mFindPath(pos1, pos2, myUpdatedPath); flag_update_path = false; } mMoveOnThePath(myUpdatedPath, myLocationOfFirstCube, myGridSize); }