private void Update() { if (move == 0 && check == true) { if (movecount == 0) { if (bossstart.remoteplayerlist.Contains(0)) { targetobj = (GameObject)bossstart.remoteplayerlist[0]; target = targetobj.transform.GetChild(0).GetComponent <Transform>(); } else if (bossstart.remoteplayerlist.Contains(1)) { targetobj = (GameObject)bossstart.remoteplayerlist[1]; target = targetobj.transform.GetChild(0).GetComponent <Transform>(); } else if (bossstart.remoteplayerlist.Contains(2)) { targetobj = (GameObject)bossstart.remoteplayerlist[2]; target = targetobj.transform.GetChild(0).GetComponent <Transform>(); } // GameObject remote_obj = (GameObject)bossstart.remoteplayerlist[i]; Vector3 vec = target.position - monster.position; vec.Normalize(); //타겟과 플레이어 사이의 벡터를 이용해 플레이어가 타겟을 바라보게 한다 Quaternion q = Quaternion.LookRotation(vec); monster.rotation = q; startpoint = monster.position; destination = target.position; movecount += 1; Debug.Log("movecount" + movecount); float yrot = monster.eulerAngles.y; builder = new FlatBufferBuilder(1024); Monster.StartMonster(builder); Monster.AddMonsterstate(builder, 0); Monster.AddPower(builder, 0); Monster.AddHp(builder, 0); Monster.AddMovestate(builder, MoveState.Move); Monster.AddFire(builder, 0); Monster.AddMonsterpos(builder, Vec3.CreateVec3(builder, destination.x, destination.y, destination.z)); Monster.AddMonsterrot(builder, yrot); Offset <Monster> raidbossmonster = Monster.EndMonster(builder); var monsters = new Offset <Monster> [1]; monsters[0] = raidbossmonster; var monstersOffset = Game.CreateMonsterVector(builder, monsters); Game.StartGame(builder); Game.AddMonster(builder, monstersOffset); Game.AddTablenum(builder, 1); Offset <Game> game = Game.EndGame(builder); builder.Finish(game.Value); sendBuffer = builder.SizedByteArray(); sendbb = new ByteBuffer(sendBuffer); if (findteam.stream.CanWrite) { //데이터를 서버에 스트림으로 보낸다 bytearray findteam.stream.Write(sendBuffer, 0, sendBuffer.Length); findteam.stream.Flush(); } } // Debug.Log("startpoint:" + startpoint); // Debug.Log("destination:" + destination); monster.position = Vector3.MoveTowards(monster.position, destination, 20f * Time.deltaTime); //목적지 보내기 목적지 받으면 그쪽으로 이동하게 하기 if (monster.position == destination) // if (Time.time > nextFire) { movecount = 0; //공격 신호 보내 builder = new FlatBufferBuilder(1024); Monster.StartMonster(builder); Monster.AddMonsterstate(builder, 0); Monster.AddPower(builder, 0); Monster.AddHp(builder, 0); Monster.AddFire(builder, 1); Monster.AddMovestate(builder, MoveState.Stop); Monster.AddMonsterpos(builder, Vec3.CreateVec3(builder, monster.position.x, monster.position.y, monster.position.z)); Monster.AddMonsterrot(builder, monster.eulerAngles.y); Offset <Monster> raidbossmonster = Monster.EndMonster(builder); var monsters = new Offset <Monster> [1]; monsters[0] = raidbossmonster; var monstersOffset = Game.CreateMonsterVector(builder, monsters); Game.StartGame(builder); Game.AddMonster(builder, monstersOffset); Game.AddTablenum(builder, 1); Offset <Game> game = Game.EndGame(builder); builder.Finish(game.Value); sendBuffer = builder.SizedByteArray(); sendbb = new ByteBuffer(sendBuffer); if (findteam.stream.CanWrite) { //데이터를 서버에 스트림으로 보낸다 bytearray findteam.stream.Write(sendBuffer, 0, sendBuffer.Length); findteam.stream.Flush(); } nextFire += fireRate; Bullet = Resources.Load <GameObject>("Bossraid/raidmonsterbullet"); Quaternion bullettest1 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y, 0); Quaternion bullettest5 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 90f, 0); Quaternion bullettest8 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y - 90f, 0); Quaternion bullettest12 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 180f, 0); Quaternion bullettest2 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 30f, 0); Quaternion bullettest3 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y - 30f, 0); Quaternion bullettest4 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 60f, 0); Quaternion bullettest6 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 120f, 0); Quaternion bullettest7 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y - 60f, 0); Quaternion bullettest9 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y - 120f, 0); Quaternion bullettest10 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y + 160f, 0); Quaternion bullettest11 = Quaternion.Euler(0, gunpos.transform.eulerAngles.y - 160f, 0); Instantiate(Bullet, gunpos.transform.position, bullettest1); Instantiate(Bullet, gunpos.transform.position, bullettest5); Instantiate(Bullet, gunpos.transform.position, bullettest8); Instantiate(Bullet, gunpos.transform.position, bullettest12); Instantiate(Bullet, gunpos.transform.position, bullettest2); Instantiate(Bullet, gunpos.transform.position, bullettest3); Instantiate(Bullet, gunpos.transform.position, bullettest4); Instantiate(Bullet, gunpos.transform.position, bullettest6); Instantiate(Bullet, gunpos.transform.position, bullettest7); Instantiate(Bullet, gunpos.transform.position, bullettest9); Instantiate(Bullet, gunpos.transform.position, bullettest10); Instantiate(Bullet, gunpos.transform.position, bullettest11); check = false; StartCoroutine(WaitForIt()); //공격 데이터 보내기 } } }