Пример #1
0
        public virtual void Init()
        {
            gameScene = GameApp.GetInstance().GetGameScene();
            rConf     = GameApp.GetInstance().GetResourceConfig();

            gameCamera      = gameScene.GetCamera();
            cameraComponent = gameCamera.GetComponent <Camera>();
            cameraTransform = gameCamera.CameraTransform;
            player          = gameScene.GetPlayer(); //! 获取场景中的人物

            aimTarget = new Vector3();

            hitParticles    = rConf.hitparticles;
            projectile      = rConf.projectile;
            hitForce        = 0f;
            weaponBoneTrans = player.GetTransform().Find(BoneName.WEAPON_PATH);   //! 获取人物中挂载武器的节点

            //gun = weaponBoneTrans.Find("Rifle").gameObject;
            CreateGun();
            gun.transform.parent = weaponBoneTrans;


            BindGunAndFire();

            shootAudio = gun.GetComponent <AudioSource>();
            if (shootAudio == null)
            {
            }
            else
            {
            }
            GunOff();
        }
Пример #2
0
        /*
         * public void UpdateDifficultyLevel(float difficultyFactor)
         * {
         *  //simple level difficulty formula
         *
         *  //int theday = GameApp.GetInstance().GetGameState().TheDays;
         *  //difficultyFactor = ((theday - 1) * 2) / 100.0f;
         *
         *  gameParameters.ZombieAttack *= (1 + difficultyFactor);
         *  gameParameters.ZombieHP *= (1 + difficultyFactor);
         *  gameParameters.ZombieAttackFrenquency /= (1 + difficultyFactor);
         *
         *
         *  gameParameters.NurseAttack *= (1 + difficultyFactor);
         *  gameParameters.NurseHP *= (1 + difficultyFactor);
         *  gameParameters.NurseAttackFrenquency /= (1 + difficultyFactor);
         *
         *  gameParameters.FatZombieAttack *= (1 + difficultyFactor);
         *  gameParameters.FatZombieHP *= (1 + difficultyFactor);
         *  gameParameters.FatZombieRushingFrenquency /= (1 + difficultyFactor);
         *  gameParameters.FatZombieRushingDamage *= (1 + difficultyFactor);
         *  gameParameters.FatZombieRushingAttackDamage *= (1 + difficultyFactor);
         *
         * }
         */

        public void ClearAllSceneResources()
        {
            player = null;
            enemyList.Clear();
            woodboxList      = null;
            path             = null;
            this.triggerList = null;
            camera           = null;
        }
Пример #3
0
        public void Init()
        {
            //! 随机出生点
            GameObject[] pss = GameObject.FindGameObjectsWithTag("Respawn");
            int          rnd = Random.Range(0, pss.Length);

            GameObject ps = pss[rnd];

            respawnTrans = ps.transform;
            avatarType   = GameApp.GetInstance().GetGameState().Avatar;
            //! playerObject = AvatarFactory.GetInstance().CreateAvatar(avatarType);   //! 创建角色

            playerObject = AvatarFactory.GetInstance().CreateAvatar(Zombie3D.AvatarType.EnegyArmor);               //! 创建钢铁侠
            playerObject.transform.position = ps.transform.position;
            playerObject.transform.rotation = ps.transform.rotation;

            playerObject.name = "Player";
            playerTransform   = playerObject.transform;
            playerConfig      = GameApp.GetInstance().GetGameConfig().playerConf;
            int armorLevel = GameApp.GetInstance().GetGameState().ArmorLevel;

            hp    = playerConfig.hp * (1 + armorLevel * 0.5f);
            maxHp = hp;

            //! 特种兵的血量 × 2
            if (avatarType == AvatarType.Swat)
            {
                hp    = hp * Constant.SWAT_HP;
                maxHp = hp;
            }
            else if (avatarType == AvatarType.EnegyArmor)
            {
                hp    = hp * Constant.ENEGY_ARMOR_HP_BOOST;
                maxHp = hp;
            }


            gameCamera     = GameApp.GetInstance().GetGameScene().GetCamera();
            charController = playerObject.GetComponent <CharacterController>();   //! 控制器
            animation      = playerObject.GetComponent <UnityEngine.Animation>(); //! 动画器
            collider       = playerObject.GetComponent <Collider>();              //! 碰撞检测

            //! 音效
            audioPlayer = new AudioPlayer();
            Transform folderTrans = playerTransform.Find("Audio");

            audioPlayer.AddAudio(folderTrans, AudioName.GETITEM);
            audioPlayer.AddAudio(folderTrans, AudioName.DEAD);
            audioPlayer.AddAudio(folderTrans, AudioName.SWITCH);
            audioPlayer.AddAudio(folderTrans, AudioName.WALK);


            //! 为什么又初始化一边武器列表
            GameApp.GetInstance().GetGameState().InitWeapons();


            weaponList = GameApp.GetInstance().GetGameState().GetBattleWeapons();


            playerState = Player.IDLE_STATE;



            foreach (Weapon w in weaponList)
            {
                w.Init();
            }


            Weapon powerWeapon = null;
            float  maxDamage   = 0;

            foreach (Weapon w in weaponList)
            {
                if (maxDamage < w.Damage)
                {
                    maxDamage   = w.Damage;
                    powerWeapon = w;
                }

                //! if (w.IsSelectedForBattle)
                //! {
                //!     ChangeWeapon(w);
                //!     break;
                //! }
            }

            //! 切换武器
            ChangeWeapon(powerWeapon);


            walkSpeed = GameApp.GetInstance().GetGameConfig().playerConf.walkSpeed - weapon.GetSpeedDrag();  //! 人物速度 - 武器武器负重

            ChangeToNormalState();


            if (gameCamera.GetCameraType() == CameraType.TPSCamera)
            {
                inputController = new TPSInputController();
                inputController.Init();
            }
            else if (gameCamera.GetCameraType() == CameraType.TopWatchingCamera)
            {
                inputController = new TopWatchingInputController();
                inputController.Init();
            }


            UpdateNearestWayPoint();
        }
Пример #4
0
        public void Init(int index)
        {
            GameApp.GetInstance().DebugInfo = "";
            sceneIndex = index;
            //! sceneName = Application.loadedLevelName.Substring(9);
            sceneName = SceneManager.GetSceneAt(0).name;                   //! 保存场景名字

            //infectionRate = GameApp.GetInstance().GetGameState().GetInfectionRate(index);
            //! 读取 ai 路标 箱子列表
            CreateSceneData();

            //! 打中时流血的例子粒子效果
            hitBloodObjectPool.Init("HitBlood", GameApp.GetInstance().GetResourceConfig().hitBlood, 3, 0.4f);

            for (int i = 0; i < deadBodyObjectPool.Length; i++)
            {
                deadBodyObjectPool[i] = new ObjectPool();
                enemyObjectPool[i]    = new ObjectPool();
            }

            //! 死亡时的mesh网格
            deadBodyObjectPool[0].Init("DeadBody_Zombie", GameApp.GetInstance().GetResourceConfig().deadbody[0], 10, 2.0f);  //! zombie
            deadBodyObjectPool[1].Init("DeadBody_Nurse", GameApp.GetInstance().GetResourceConfig().deadbody[1], 5, 2.0f);    //! 护 士
            deadBodyObjectPool[4].Init("DeadBody_Boomer", GameApp.GetInstance().GetResourceConfig().deadbody[4], 5, 2.0f);   //! 炸弹 人
            deadBodyObjectPool[5].Init("DeadBody_Swat", GameApp.GetInstance().GetResourceConfig().deadbody[5], 5, 2.0f);     //! 特种兵

            //! 敌人mesh
            enemyObjectPool[0].Init("Zombies", GameApp.GetInstance().GetResourceConfig().enemy[0], 10, 0f);
            enemyObjectPool[1].Init("Nurses", GameApp.GetInstance().GetResourceConfig().enemy[1], 5, 0f);
            enemyObjectPool[2].Init("Tanks", GameApp.GetInstance().GetResourceConfig().enemy[2], 2, 0f);
            enemyObjectPool[3].Init("Hunters", GameApp.GetInstance().GetResourceConfig().enemy[3], 2, 0f);
            enemyObjectPool[4].Init("Boomers", GameApp.GetInstance().GetResourceConfig().enemy[4], 5, 0f);
            enemyObjectPool[5].Init("Swats", GameApp.GetInstance().GetResourceConfig().enemy[5], 5, 0f);


            camera = GameObject.Find("Main Camera").GetComponent <TPSSimpleCameraScript>();

            if (camera == null)
            {
                camera = GameObject.Find("Main Camera").GetComponent <TopWatchingCameraScript>();
            }
            else if (!camera.enabled)
            {
                camera = GameObject.Find("Main Camera").GetComponent <TopWatchingCameraScript>();
            }

            //! 创建Player
            player = new Player();
            player.Init();
            camera.Init();

            enemyList = new Hashtable();

            playingState = PlayingState.GamePlaying;


            GameApp.GetInstance().GetGameState().Achievement.CheckAchievemnet_NeverGiveUp();

            enemyNum     = 0;
            killed       = 0;
            triggerCount = 0;
            enemyID      = 0;


            Color[] colors =
            {
                Color.white,
                Color.red,
                Color.blue,
                Color.yellow,
                Color.magenta,
                Color.gray,
                Color.grey,
                Color.cyan
            };

            int cIndex = Random.Range(0, colors.Length);

            RenderSettings.ambientLight = colors[cIndex];
        }