示例#1
0
    private async Task LoadSomeConfigs()
    {
        var taskHpBar = Addressables.LoadAssetAsync <Sprite>("hpred").Task;

        enemyHpBar     = await taskHpBar;
        enemysDataName = GetLevelDataEnemyNm();
        var task = Addressables.LoadAssetAsync <EnemysData>(enemysDataName).Task;

        enemysData = await task;
    }
示例#2
0
    public IEnumerator CreatEnemys(EnemysData enemyData)//生成怪物频率
    {
        creatEnemysTimes -= Time.deltaTime;
        yield return(new WaitForSeconds(3));

        if (enemyData != null && isCreat == true)
        {
            creatEnemysTimes = 3;
            for (int i = 0; i < enemyData.enemys.Count; i++)
            {
                var go = Instantiate(enemyData.enemys[i].enemy, transform);
                go.tag = "EnemysPlane";
                go.GetComponent <RoleBase>().myHpBarImage.sprite = enemyHpBar;
                go.GetComponent <RoleBase>().RoleInitInfo();
            }
            isCreat = false;
            UserAssetManager.Instance.NoFirstGame();
        }
        else
        {
            yield break;
        }
    }
示例#3
0
 void Start()
 {
     eneData = transform.parent.GetComponent <EnemysData>();
     //HpBar = GetComponent<Image>();
 }
示例#4
0
 public void StageEnd()
 {
     m_instance = null;
 }
示例#5
0
    public static void updateEnemyPositions()
    {
        if (true)
        {
            if (!Globals.locked)

            {
                try
                {
                    foreach (cPositionDataEnemys pos in Globals.GlobalEnemyPositions.Values)
                    {
                        if (pos.SessionID != Globals.SessionID && Globals.SessionID != "" && Globals.SessionID != null)
                        {
                            GameObject avatar = GameObject.Find(pos.SessionID);

                            cPositionData player;

                            Globals.GlobalPlayerPositions.TryGetValue(Globals.SessionID, out player);

                            pos.y = 0;
                            Animator     a = avatar.GetComponent <Animator>();
                            StateMachine sm;
                            sm = avatar.GetComponent <StateMachine>();
                            //----Damage---
                            //Enemy is targeted by a player
                            if (player.target != null)
                            {
                                //target is current enemy
                                if (player.target == pos.SessionID)
                                {
                                    //attack
                                    GameObject HealthBar = GameObject.Find("Health Bar");
                                    if (HealthBar != null)
                                    {
                                        float hp = (float)Globals.GlobalEnemyPositions[pos.SessionID].charData.CharacterStats.Health;
                                        hp = hp / 100.00f;
                                        HealthBar.GetComponent <UIProgressBar>().value = hp;
                                        Debug.Log(pos.charData.CharacterStats.Health);
                                    }
                                    else
                                    {
                                        Debug.Log("ERRRR");
                                    }



                                    GameObject HealthBarPlayer = GameObject.Find("Energy Bar");
                                    if (HealthBarPlayer != null)
                                    {
                                        float hp = (float)Globals.GlobalPlayerPositions[pos.target].character.CharacterStats.Health;
                                        hp = hp / 100.00f;
                                        HealthBarPlayer.GetComponent <UIProgressBar>().value = hp;
                                    }
                                    else
                                    {
                                        Debug.Log("ERRRR");
                                    }
                                }
                            }

                            if (pos != null)
                            {
                                try
                                {
                                    try
                                    {
                                        //set animatin according to whether mob is moving
                                        //		if(sm.currentState!="Attacking" && sm.currentState!="Walking"&& sm.currentState!="Running")
                                        //                              if (pos.moving)
                                        //                                  sm.changeState("Moving", StateTypes.STATE_WALKING, pos.SessionID);
                                    }
                                    catch (Exception) { }
                                    //sm.changeState("Idle", StateTypes.STATE_IDLE, pos.SessionID);

                                    Vector3 newpos = avatar.transform.position;
                                    float   time   = Time.deltaTime;// < 0.01f ? Time.deltaTime : 0.01f;

                                    float avaX = 0;
                                    float avaY = 0;
                                    //Get current position of enemy gameobject(rounded)
                                    avaX = (float)Math.Round(avatar.transform.position.x, 1, MidpointRounding.AwayFromZero); //   avatar.transform.position.x-(avatar.transform.position.x % 1f);
                                    avaY = (float)Math.Round(avatar.transform.position.z, 1, MidpointRounding.AwayFromZero); //   avatar.transform.position.x-(avatar.transform.position.x % 1f);

                                    //get new enemy position (from server)
                                    float targetX = (float)Math.Round(pos.x, 1, MidpointRounding.AwayFromZero); //   avatar.transform.position.x-(avatar.transform.position.x % 1f);
                                    float targetY = (float)Math.Round(pos.z, 1, MidpointRounding.AwayFromZero); //   avatar.transform.position.x-(avatar.transform.position.x % 1f);

                                    //   if (pos.target != null && Globals.GlobalPlayerPositions.ContainsKey(pos.target))
                                    {
                                        //    if (pos.isInFight == false)
                                        //if not colliding
                                        if (!avatar.GetComponent <DoCollission>().Stoped)
                                        {
                                            //got target and target is valid
                                            if (pos.target != null && Globals.GlobalPlayerPositions.ContainsKey(pos.target))
                                            {
                                                //Set animation
                                                //if (!Globals.inFight)
                                                if (sm.currentState != "Running")
                                                {
                                                    sm.changeState("Running", StateTypes.STATE_RUNNING, pos.SessionID);
                                                }
                                                // else if(avatar.GetComponent<DoCollission>().Stoped)
                                                //    sm.changeState("Idle", StateTypes.STATE_IDLE, pos.SessionID);
                                                //    if(sm.currentState!="Attacking")
                                                //      sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID);
                                                //set go to either current player, or other multiplayer character
                                                GameObject go = pos.target == Globals.SessionID ? GameObject.Find("vThirdPersonController") : GameObject.Find(pos.target);
                                                //Rotate towards player
                                                Vector3    targetPoint    = new Vector3(go.transform.position.x, avatar.transform.position.y, go.transform.position.z) - avatar.transform.position;
                                                Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up);
                                                avatar.transform.rotation = Quaternion.RotateTowards(avatar.transform.rotation, targetRotation, 360);
                                                //set movement towards new positin
                                                newpos.x = avatar.transform.position.x + ((GWTools.posEnemyToVector3(pos).x - avatar.transform.position.x) * time);
                                                newpos.z = avatar.transform.position.z + ((GWTools.posEnemyToVector3(pos).z - avatar.transform.position.z) * time);

                                                avatar.transform.position = newpos;
                                                Globals.inFight           = false;
                                            }
                                        }
                                        if (avatar.GetComponent <DoCollission>().Stoped)


                                        {
                                            Globals.inFight = true;
                                            if (sm.currentState != "Attacking")
                                            {
                                                sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID);
                                            }
                                            GameObject go = pos.target == Globals.SessionID ? GameObject.Find("vThirdPersonController") : GameObject.Find(pos.target);

                                            Vector3    targetPoint    = new Vector3(go.transform.position.x, avatar.transform.position.y, go.transform.position.z) - avatar.transform.position;
                                            Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up);
                                            avatar.transform.rotation = Quaternion.RotateTowards(avatar.transform.rotation, targetRotation, 360);
                                        }

                                        //apply position
                                    }// END NO TARGET
                                    //      else
                                    {
                                        /*       //HAS TARGET
                                         *
                                         *     if (!avatar.GetComponent<DoCollission>().Stoped)
                                         *     {
                                         *         Vector3 targetPoint = new Vector3(pos.x, avatar.transform.position.y, pos.z) - avatar.transform.position;
                                         *         Quaternion targetRotation = Quaternion.LookRotation(targetPoint, Vector3.up);
                                         *         avatar.transform.rotation = Quaternion.Slerp(avatar.transform.rotation, targetRotation, Time.deltaTime * 10.0f);
                                         *
                                         *         sm.changeState("Walking", StateTypes.STATE_WALKING, pos.SessionID);
                                         *         newpos.x = avatar.transform.position.x + ((GWTools.posEnemyToVector3(pos).x - avatar.transform.position.x) * time*5);
                                         *         newpos.z = avatar.transform.position.z + ((GWTools.posEnemyToVector3(pos).z - avatar.transform.position.z) * time*5);
                                         *
                                         *     }
                                         *     else
                                         *     {
                                         *         sm.changeState("Attacking", StateTypes.STATE_FIGHTING, pos.SessionID);
                                         *         newpos.x = avatar.transform.position.x;
                                         *         newpos.z = avatar.transform.position.z;
                                         *
                                         *     }*/
                                    }//END HAS TARGET

                                    //apply position
                                    avatar.transform.position = newpos;
                                }
                                catch (Exception ex) { EnemysData.spawnEnemy(pos); }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Globals.locked = false;
                }
                Globals.locked = false;
            }
        }
    }
示例#6
0
    void Update()
    {
        //Is player logged in?
        if (Globals.SessionID != "" && Globals.SessionID != null && !Globals.dead)
        {
            GameObject    avatar = GameObject.Find("vThirdPersonController");
            cPositionData pos    = Globals.PlayerPosition;

            //----Global stuff-----
            if (Globals.loadWorldData)
            {
                Globals.loadWorldData = false;
                LoadSaveWorldData.LoadWorldData(Globals.wd);
            }

            if (Globals.mute)
            {
                GameObject  avatar2 = GameObject.Find("FANTASY_WOLF");
                AudioSource s       = avatar2.GetComponent <AudioSource>();
                s.mute = true;
            }

            if (Globals.dead)
            {
                Destroy(avatar);
            }


            //----Key Input---
            if (Input.GetKeyUp("space"))
            {
                //Change Level
                //Globals.con.SendObject("ChangeWorld", new String[] { "1", Globals.SessionID });
            }
            //toggle inventory
            if (Input.GetKeyUp(KeyCode.I))
            {
                Globals._Inventory.SetActive(!Globals._Inventory.active);
            }

            if (Input.GetKeyUp("escape"))
            {
                if (UpdatePlayerTarget.playerTarget != null)
                {
                    Globals.con.SendObject <string>("CancelTarget", Globals.SessionID);
                }
            }

            //Lock/unlock mouse/movement
            if (Input.GetMouseButton(1))
            {
                if (Cursor.visible == true)
                {
                    Cursor.visible = false;
                    GWTools.lockMouse();
                }

                /*
                 * //Cancel targeting
                 * if (UpdatePlayerTarget.playerTarget != null)
                 * {
                 *  Globals.con.SendObject<string>("CancelTarget", Globals.SessionID);
                 * }
                 * else//Lock/unlock cursor
                 * {
                 *  if (Cursor.visible == false)
                 *  {
                 *      Cursor.visible = true;
                 *      GWTools.unlockMouse();
                 *  }
                 *  else
                 *  {
                 *      Cursor.visible = false;
                 *      GWTools.lockMouse();
                 *  }
                 * }*/
            }
            else
            {
                if (Cursor.visible == false)
                {
                    Cursor.visible = true;
                    GWTools.unlockMouse();
                }
            }
            //-------Data update functions----------

            //Inventory
            InventoryData.UpdateInventory();

            GameObject inv = GameObject.Find("Inventory");
            if (inv != null)
            {
                Inventory inv_sc = inv.GetComponent <Inventory>();

                for (int i = 0; i < inv_sc.items.Count; i++)
                {
                    GameObject goItem = (GameObject)inv_sc.items[i];
                    Item       scItem = goItem.GetComponent <Item>();
                    bool       found  = false;

                    foreach (Data.Items.Item itmEqu in Globals.PlayerPosition.character.equipment.Values)
                    {
                        Debug.Log(itmEqu.ItemID);
                        if (itmEqu.ItemID == scItem.item_dat.ItemID)
                        {
                            found = true;
                        }
                    }
                    if (found)
                    {
                        scItem.textColor = Color.yellow;
                    }
                    else
                    {
                        scItem.textColor = Color.white;
                    }
                    scItem.inventoryTexture = Resources.Load <Texture2D>("Icon_Sword");
                    inv.GetComponent <Inventory>().items[i] = goItem;
                }
            }


            foreach (Data.Items.Item itm in Globals.Loot.Values)
            {
                if (!GameObject.Find(itm.ItemID))
                {
                    GameObject newObj = GameObject.Instantiate(GameObject.Find("DragMe"));
                    newObj.name = itm.ItemID;
                    newObj.transform.position = new Vector3(itm.x, Terrain.activeTerrain.SampleHeight(new Vector3(itm.x, 0, itm.z)), itm.z);

                    GameObject defaultObj = GameObject.Instantiate(GameObject.Find("default"));
                    newObj.AddChild(defaultObj);
                }
            }



            //Spell Casting
            SpellData.CheckInputAndCast(pos, avatar);
            //Attacking Enemys - Statemachine for attacking enemies
            EnemysData.AttackingEnemys();

            //Spawn new Players/Enemys
            EnemysData.SpawnEnemys();
            PlayersData.SpawnPlayers();

            //Destroy obsolete Players/Enemys
            EnemysData.RemoveEnemys();
            PlayersData.RemovePlayers();

            //------Position update--------------
            //Get current position
            cPositionData currpos = GWTools.genPosDataFromGameObject(avatar);
            //Send current position to server
            Globals.con.SendObject("GlobalPositionUpdate", currpos);
            //Update players and enemys positions
            GlobalPositionsUpdate.updateAvatarPositions();
            GlobalPositionsUpdate.updateEnemyPositions();
        }
    }