コード例 #1
0
    IEnumerator raidboss()
    {
        yield return(new WaitForSeconds(2f));

        builder = new FlatBufferBuilder(1024);

        Monster.StartMonster(builder);
        Monster.AddMonsterstate(builder, 1);
        Monster.AddPower(builder, 0);
        Monster.AddHp(builder, 0);
        Monster.AddMonsterpos(builder, Vec3.CreateVec3(builder, 0, 0, 0));
        Monster.AddMonsterrot(builder, 0);
        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();
        }

        GameObject.Find("bossstart_cs").GetComponent <bossstart>().bossmonsterhpfac.SetActive(true);

        monster = Resources.Load <GameObject>("Bossraid/raidbossfac");

        monsterborn = Instantiate(monster, new Vector3(0f, 0f, 0f), Quaternion.identity);
    }
コード例 #2
0
    void OnTriggerEnter(Collider other)
    // void OnCollisionEnter(Collision other)
    {
        Debug.Log("colidertest1:" + other);
        //other는 부딪힌 오브젝트 벽 또는 적에 맞으면 총알이 사라진다
        if (other.gameObject.tag == "Playerbullet")
        {
            Debug.Log("colidertest2:" + other);
            var player = GameObject.FindWithTag("Player").GetComponent <bossplayerinfo>();

            //몬스터의 체력은 플레이어 공격력 만큼 감소
            monsterhp = monsterhp - player.playerpower;

            if (monsterhp <= 0)
            {
                monsterhp = 0;
            }

            builder = new FlatBufferBuilder(1024);
            Monster.StartMonster(builder);
            Monster.AddMonsterstate(builder, 0);
            Monster.AddPower(builder, 0);
            Monster.AddHp(builder, 0);
            Monster.AddMonsterpos(builder, Vec3.CreateVec3(builder, 0, 0, 0));
            Monster.AddMonsterrot(builder, 0);
            Monster.AddAttacked(builder, 1);
            Monster.AddCurrenthp(builder, monsterhp);
            Offset <Monster> raidbossmonster = Monster.EndMonster(builder);

            var monsters = new Offset <Monster> [1];
            monsters[0] = raidbossmonster;
            var monstersOffset = Game.CreateMonsterVector(builder, monsters);


            Player.StartPlayer(builder);
            Player.AddStartstate(builder, PlayerStart.Play);
            Player.AddPower(builder, player.playerpower);
            Offset <Player> pypplayer = Player.EndPlayer(builder);



            Game.StartGame(builder);
            Game.AddPlayer(builder, pypplayer);
            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();
            }



            string hp = monsterhp.ToString();
            //  monhp_text.text = hp;
            //  monhpbar.value = (float)monsterhp / (float)monstermaxhp;
            Debug.Log("player_hp: " + monsterhp);
        }

        if (other.gameObject.tag == "skill")
        {
            var player = GameObject.FindWithTag("Player").GetComponent <bossplayerinfo>();

            //몬스터의 체력은 플레이어 공격력 만큼 감소
            monsterhp = monsterhp - player.playerskillatk;

            if (monsterhp <= 0)
            {
                monsterhp = 0;
            }


            builder = new FlatBufferBuilder(1024);
            Monster.StartMonster(builder);
            Monster.AddMonsterstate(builder, 0);
            Monster.AddPower(builder, 0);
            Monster.AddHp(builder, 0);
            Monster.AddMonsterpos(builder, Vec3.CreateVec3(builder, 0, 0, 0));
            Monster.AddMonsterrot(builder, 0);
            Monster.AddCurrenthp(builder, monsterhp);
            Offset <Monster> raidbossmonster = Monster.EndMonster(builder);

            var monsters = new Offset <Monster> [1];
            monsters[0] = raidbossmonster;
            var monstersOffset = Game.CreateMonsterVector(builder, monsters);

            Player.StartPlayer(builder);
            Player.AddStartstate(builder, PlayerStart.Play);
            Player.AddPower(builder, player.playerskillatk);
            Offset <Player> pypplayer = Player.EndPlayer(builder);

            Game.StartGame(builder);
            Game.AddPlayer(builder, pypplayer);
            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();
            }


            string hp = monsterhp.ToString();
            //monhp_text.text = hp;
            //monhpbar.value = (float)monsterhp / (float)monstermaxhp;
            Debug.Log("player_hp: " + monsterhp);
        }
    }
コード例 #3
0
    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());

                //공격 데이터 보내기
            }
        }
    }