Ejemplo n.º 1
0
        public void HitEnemy()
        {
            ViewModel vm = new ViewModel();

            vm.Ship.X = 300;
            vm.Ship.Y = 300;

            Enemy0 enemy = new Enemy0(300, 0);

            vm.AddEnemy(enemy);

            vm.KeyDown(Windows.System.VirtualKey.Space);
            vm.Tick(1);
            Bullet bullet = (Bullet)vm.Bullets[0];

            int nFrame = (int)((bullet.Y - (enemy.Y + enemy.Height))
                               / (enemy.SpeedY - bullet.SpeedY));

            vm.Tick(nFrame + 1);

            Assert.IsFalse(enemy.IsValid);
            Assert.IsFalse(bullet.IsValid);
            Assert.AreEqual(1, vm.Blasts.Count);

            Blast blast = (Blast)vm.Blasts[0];

            Assert.AreEqual(bullet.X + bullet.Width / 2, blast.X + blast.Width / 2);
            Assert.AreEqual(bullet.Y + bullet.Height / 2, blast.Y + blast.Height / 2);

            vm.Tick(10);
            Assert.AreEqual(0, vm.Blasts.Count);
        }
Ejemplo n.º 2
0
 // Use this for initialization
 void Start()
 {
     try
     {
         text                = GameObject.Find("Text").GetComponent <Text>();
         animator            = Unitychan.GetComponent <Animator>();
         rb                  = Unitychan.GetComponent <Rigidbody>();
         Enemy0_scripts      = Enemy0.GetComponent <Animation1>();
         Enemy1_scripts      = Enemy1.GetComponent <Animation5>();
         Light_scripts       = LightManager.GetComponent <Animation2>();
         Sword_scripts       = SwordManager.GetComponent <Animation3>();
         Player_scripts      = Player.GetComponent <Animation4>();
         Camera_scripts      = Camera.GetComponent <Animation4>();
         UnityChan_scripts   = Unitychan.GetComponent <Opening_UnityChan>();
         EnemyMaster_scripts = EnemyMaster.GetComponent <EnemyGenerator>();
         opening             = true;
         countdown           = false;
         playing             = false;
         gameover            = false;
         clear               = false;
     }
     catch (Exception e)
     {
         Debug.Log("exception");
     }
 }
Ejemplo n.º 3
0
        public void EnemyShootBullet()
        {
            ViewModel vm = new ViewModel();

            vm.Ship.X = 300 - vm.Ship.Width / 2;
            vm.Ship.Y = 300;

            Enemy0 enemy = new Enemy0(300, 0);

            enemy.X -= enemy.Width / 2;
            vm.AddEnemy(enemy);
            vm.Tick(19);

            Assert.AreEqual(0, vm.Bullets.Count);
            vm.Tick(1);
            Assert.AreEqual(1, vm.Bullets.Count);

            Bullet b = (Bullet)vm.Bullets[0];
            Enemy0 e = (Enemy0)vm.Enemies[0];

            Assert.AreEqual(b.X + b.Width / 2 - 5, e.X + e.Width / 2);
            Assert.AreEqual(b.Y + b.Height / 2 - 5, e.Y + e.Height / 2);

            Assert.IsTrue(vm.Ship.IsValid);
            vm.Tick(20);
            Assert.IsFalse(vm.Ship.IsValid);
        }
Ejemplo n.º 4
0
        public void SequentialEnemies()
        {
            String str = @"[
              { ""time"": 100, ""type"": 0, ""x"":10, ""y"": 60},
              { ""time"": 200, ""type"": 1, ""x"":20, ""y"": 70},
              { ""time"": 300, ""type"": 2, ""x"":30, ""y"": 80},
              { ""time"": 400, ""type"": 3, ""x"":40, ""y"": 90},
              { ""time"": 500, ""type"": 4, ""x"":50, ""y"": 100},
            ";
            Dictionary <int, List <AbstractEnemy> > story
                = ScenarioReader.Read(str);

            Assert.IsInstanceOfType(story[100][0], typeof(Enemy0));
            Assert.IsInstanceOfType(story[200][0], typeof(Enemy1));
            Assert.IsInstanceOfType(story[300][0], typeof(Enemy2));
            Assert.IsInstanceOfType(story[400][0], typeof(Enemy3));
            Assert.IsInstanceOfType(story[500][0], typeof(Enemy4));

            Enemy0 e0 = (Enemy0)story[100][0];
            Enemy1 e1 = (Enemy1)story[200][0];
            Enemy2 e2 = (Enemy2)story[300][0];
            Enemy3 e3 = (Enemy3)story[400][0];
            Enemy4 e4 = (Enemy4)story[500][0];

            Assert.AreEqual(10, e0.X);
            Assert.AreEqual(60, e0.Y);
            Assert.AreEqual(20, e1.X);
            Assert.AreEqual(70, e1.Y);
            Assert.AreEqual(30, e2.X);
            Assert.AreEqual(80, e2.Y);
            Assert.AreEqual(40, e3.X);
            Assert.AreEqual(90, e3.Y);
            Assert.AreEqual(50, e4.X);
            Assert.AreEqual(100, e4.Y);
        }
Ejemplo n.º 5
0
        public void BlastSound()
        {
            ViewModel vm = new ViewModel();

            vm.PlaySound += PlaySoundHandler;
            vm.Ship.X     = 300;
            vm.Ship.Y     = 300;
            Enemy0 e = new Enemy0(300, 0);

            vm.AddEnemy(e);

            AssertSoundEffect(vm, VirtualKey.Space, SoundEffect.Shoot);
            vm.Tick(50);
            Assert.AreEqual(SoundEffect.Blast, effect);
        }
Ejemplo n.º 6
0
        static internal Dictionary <int, List <AbstractEnemy> > Read(String content)
        {
            Dictionary <int, List <AbstractEnemy> > story
                = new Dictionary <int, List <AbstractEnemy> >();

            var json = (dynamic)JsonConvert.DeserializeObject(content);

            foreach (var e in json)
            {
                long time = e["time"].Value;
                long type = e["type"].Value;
                long x    = e["x"].Value;
                long y    = e["y"].Value;
                long sx   = e["sx"]?.Value ?? 0;
                long sy   = e["sy"]?.Value ?? 0;

                AbstractEnemy enemy = null;
                switch (type)
                {
                case 0: enemy = new Enemy0(x, y); break;

                case 1: enemy = new Enemy1(x, y); break;

                case 2:
                    double t = sx > 0 ? -1 : +1;
                    enemy = new Enemy2(x, y, sx, sy, t);
                    break;

                case 3: enemy = new Enemy3(x, y); break;

                case 4: enemy = new Enemy4(x, y); break;
                }

                List <AbstractEnemy> enemies;
                if (story.ContainsKey((int)time))
                {
                    enemies = story[(int)time];
                }
                else
                {
                    enemies          = new List <AbstractEnemy>();
                    story[(int)time] = enemies;
                }

                enemies.Add(enemy);
            }
            return(story);
        }
Ejemplo n.º 7
0
        public void CollideEnemy()
        {
            isGameOver = false;
            ViewModel vm = new ViewModel();

            Assert.IsTrue(vm.Ship.IsValid);
            vm.Ship.X = 100;
            vm.Ship.Y = 100;
            vm.Ship.PropertyChanged += Ship_PropertyChanged;
            Enemy0 enemy = new Enemy0(100, 100);

            vm.AddEnemy(enemy);
            vm.Tick(1);
            Assert.IsFalse(vm.Ship.IsValid);
            Assert.IsTrue(isGameOver);
            vm.Ship.PropertyChanged -= Ship_PropertyChanged;
        }
Ejemplo n.º 8
0
        public void ShowMessage()
        {
            ViewModel vm = new ViewModel();

            vm.Message.Text = "PUSH SPACE TO START";
            Assert.AreEqual("PUSH SPACE TO START", vm.Message.Text);
            vm.Tick(10);

            vm.Message.Text = "";
            Assert.AreEqual("", vm.Message.Text);

            vm.Ship.X = 100;
            vm.Ship.Y = 100;
            Enemy0 enemy = new Enemy0(100, 100);

            vm.AddEnemy(enemy);
            vm.Tick(1);
            Assert.AreEqual("GAME OVER", vm.Message.Text);
        }
Ejemplo n.º 9
0
        public void CreateEnemy()
        {
            ViewModel vm = new ViewModel();

            Assert.AreEqual(vm.Enemies.Count, 0);

            Enemy0 enemy = new Enemy0(100, -50);

            vm.AddEnemy(enemy);
            Assert.AreEqual(vm.Enemies.Count, 1);
            Assert.AreEqual(100, enemy.X);
            Assert.AreEqual(-50, enemy.Y);
            vm.Tick(1);
            Assert.AreEqual(100, enemy.X);
            Assert.AreEqual(-50 + enemy.SpeedY, enemy.Y);
            Assert.AreEqual(vm.Enemies.Count, 1);
            int nFrame = (int)(ViewModel.Field.Height / enemy.SpeedY) + 10;

            vm.Tick(nFrame);
            Assert.AreEqual(vm.Enemies.Count, 0);
        }
Ejemplo n.º 10
0
    public void ShipDestroyed(Enemy0 e)
    {
        // Potentially generate a PowerUp
        if (Random.value <= e.powerUpDropChance)
        {
            // Choose which PowerUp to pick
            // Pick one from the possibilities in powerUpFrequency
            int        ndx    = Random.Range(0, powerUpFrequency.Length);
            WeaponType puType = powerUpFrequency[ndx];

            // Spawn a PowerUp
            GameObject go = Instantiate(prefabPowerUp) as GameObject;
            PowerUp    pu = go.GetComponent <PowerUp>();

            // Set it to the proper WeaponType
            pu.SetType(puType);

            // Set it to the position of the destroyed ship
            pu.transform.position = e.transform.position;
        }
    }
Ejemplo n.º 11
0
    public IEnumerator actionTaken(bool delay, Action then)
    {
        _elapsedTurns += 1;
        EnqueueEvent(new GameEvent(GameEvent.EventType.TURN_ELAPSED));

        var turnWaitDuration = delay ? 0.25f : 0;

        // wait 0.2f seconds
        yield return(new WaitForSeconds(turnWaitDuration));

        ClearEventQueue();

        Entities.FindAll(e => e.Dead).ForEach(e => {
            e.GoDie();

            Rune rune = e.RuneList[0];
            if (rune != null)
            {
                AnimUtils.ShowFloatingText("Rune Shard Recovered!", new Vector3(e.Coordinates.x, e.Coordinates.y, 0));
                if (UnityEngine.Random.value > 0.5f)
                {
                    Player.AddRuneShard(rune.action);
                }
                else
                {
                    Player.AddRuneShard(rune.trigger);
                }
            }

            this.EnqueueEvent(new GameEvent(GameEvent.EventType.ENEMY_DEAD));
        });

        Entities.RemoveAll(e => e.Dead);

        bool enemiesMoved = false;

        foreach (var e in Enemies)
        {
            e.TakeTurn();
            // if (e.isVisible) {
            enemiesMoved = true;
            //   yield return new WaitForSeconds(turnWaitDuration);
            // }
        }

        ClearEventQueue();

        // We want to prevent movement scumming, so if the player hasn't been hit in 75 turns, spawn some enemies
        if (++Player.TurnsSinceHitByEnemy >= 200)
        {
            var positions = EnumerateCircle(Player.Coordinates, 3)
                            .Where(pos => canOccupy(pos))
                            .ToList()
                            .Shuffle()
                            .Take(2);

            foreach (var pos in positions)
            {
                Enemy enemy = new Enemy0(pos);
                AddEntity(enemy);
                OnEntityAdded(enemy);
            }

            Player.TurnsSinceHitByEnemy = 0;
        }

        if (enemiesMoved)
        {
            yield return(new WaitForSeconds(turnWaitDuration));
        }

        /// Move onto the next floor!
        if (Tiles[Player.Coordinates.x, Player.Coordinates.y] is Downstairs)
        {
            Player.score += 10;
            OnCleared?.Invoke();
        }

        then();
    }
    }//Selects the enemy to attack

    public void EnemyTurn()
    {
        EnemyHolder.turnCount++;

        buttons.SetActive(false);

        enemyTurnAttack = true;

        #region ResetEnemyAttacks
        bool enemy0Taken = false;
        bool enemy1Taken = false;
        bool enemy2Taken = false;
        bool enemy3Taken = false;

        //Clears the lighting effects and enemies so it can reassign them
        Array.Clear(enemyLightingEffects, 0, enemyLightingEffects.Length);
        Array.Clear(currentEnemies, 0, currentEnemies.Length);
        Array.Clear(enemyParticles, 0, enemyParticles.Length);


        for (int i = 0; i <= EnemyHolder.enemyAmount; i++)
        {
            if (GameObject.Find("enemy0") != null && enemy0Taken == false)
            {
                enemy0Taken       = true;
                currentEnemies[i] = GameObject.Find("enemy0");
                enemyUnit[i]      = currentEnemies[i].GetComponent <UnitStats>();
                enemyColor[i]     = currentEnemies[i].GetComponent <Image>();
                enemyParticles[i] = currentEnemies[i].transform.GetChild(3).GetComponent <ParticleSystem>();
                enemyHUDs[i].SetHUD(enemyUnit[i]);
            }
            else if (GameObject.Find("enemy1") != null && enemy1Taken == false)
            {
                enemy1Taken       = true;
                currentEnemies[i] = GameObject.Find("enemy1");
                enemyUnit[i]      = currentEnemies[i].GetComponent <UnitStats>();
                enemyColor[i]     = currentEnemies[i].GetComponent <Image>();
                enemyParticles[i] = currentEnemies[i].transform.GetChild(3).GetComponent <ParticleSystem>();
                enemyHUDs[i].SetHUD(enemyUnit[i]);
            }
            else if (GameObject.Find("enemy2") != null && enemy2Taken == false)
            {
                enemy2Taken       = true;
                currentEnemies[i] = GameObject.Find("enemy2");
                enemyUnit[i]      = currentEnemies[i].GetComponent <UnitStats>();
                enemyColor[i]     = currentEnemies[i].GetComponent <Image>();
                enemyParticles[i] = currentEnemies[i].transform.GetChild(3).GetComponent <ParticleSystem>();
                enemyHUDs[i].SetHUD(enemyUnit[i]);
            }
            else if (GameObject.Find("enemy3") != null && enemy3Taken == false)
            {
                enemy3Taken       = true;
                currentEnemies[i] = GameObject.Find("enemy3");
                enemyUnit[i]      = currentEnemies[i].GetComponent <UnitStats>();
                enemyColor[i]     = currentEnemies[i].GetComponent <Image>();
                enemyParticles[i] = currentEnemies[i].transform.GetChild(3).GetComponent <ParticleSystem>();
                enemyHUDs[i].SetHUD(enemyUnit[i]);
            }
        }//Reassigns all of the enemies to make sure they are always taking up the first spaces in the array

        for (int j = 0; j <= EnemyHolder.enemyAmount; j++)
        {
            if (currentEnemies[j] != null)
            {
                enemyLightingEffects[j] = currentEnemies[j].transform.GetChild(0).gameObject;
            }
        }//Assigns the lighting effects for all current enemies

        if (GameObject.FindGameObjectsWithTag("Enemy0").Length > 0)
        {
            enemy0Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy0>();
        }
        if (GameObject.FindGameObjectsWithTag("Enemy1").Length > 0)
        {
            enemy1Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy1>();
        }
        if (GameObject.FindGameObjectsWithTag("Enemy2").Length > 0)
        {
            enemy2Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy2>();
        }
        //Resets all the enemy attack scripts to make sure there are still scripts to load attacks from

        #endregion ResetEnemyAttacks

        for (int i = 0; i <= EnemyHolder.enemyAmount; i++)
        {
            if (currentEnemies[i] != null)
            {
                if (currentEnemies[i].CompareTag("Enemy0") && currentEnemies[i] != null && enemy0Attack != null)
                {
                    enemy0Attack.StartCoroutine("EnemyTurn0");
                    EnemyHolder.coroutinesRunning++;
                }
                else if (currentEnemies[i].CompareTag("Enemy1") && currentEnemies[i] != null && enemy1Attack != null)
                {
                    enemy1Attack.StartCoroutine("EnemyTurn1");
                    EnemyHolder.coroutinesRunning++;
                }
                else if (currentEnemies[i].CompareTag("Enemy2") && currentEnemies[i] != null && enemy2Attack != null)
                {
                    enemy2Attack.StartCoroutine("EnemyTurn2");
                    EnemyHolder.coroutinesRunning++;
                }
            }
        }//Runs all enemy coroutines with delays and then sets the coroutines running to 0

        if (playerUnit.currentHP <= 0)
        {
            state = BattleStateFossil.LOST;
            StartCoroutine(EndBattle());
        }
        enemyTurnAttack = false;
    } //Basic enemy turn that will look at which enemy the player is fighting, and start seperate scripts depending on the enemy.
    IEnumerator SetupBattle()
    {
        float animSpeed = .4f;

        System.Random rnd = new System.Random();

        switch (EnemyHolder.enemyAmount)
        {
        case 0:
            enemyBattleStations[0].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(-46, -175);
            break;

        case 1:
            enemyBattleStations[0].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(47, -175);
            enemyBattleStations[1].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(400, -175);
            break;

        case 2:
            enemyBattleStations[0].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(-46, -175);
            enemyBattleStations[1].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(200, -175);
            enemyBattleStations[2].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(446, -175);
            break;

        case 3:
            enemyBattleStations[0].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(-46, -175);
            enemyBattleStations[1].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(137, -175);
            enemyBattleStations[2].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(332, -175);
            enemyBattleStations[3].GetComponent <RectTransform>().anchoredPosition = new UnityEngine.Vector2(551, -175);
            break;
        }//Places the enemies in their respective positions based on the amount of enemies that there are

        for (int i = 0; i <= EnemyHolder.enemyAmount; i++)
        {
            int enemyInSpace = rnd.Next(0, 3);

            if (enemyInSpace == 2 && (i == 1 || i == 2 || i == 3))
            {
                enemyInSpace = rnd.Next(0, 2);
            }
            else if (i == 1 || i == 2 || i == 3)
            {
                enemyInSpace = rnd.Next(0, 2);
            }
            else
            {
                enemyInSpace = 2;
            }//Forces the Ambersaur to spawn only in the first spot every time

            GameObject enemyGO = Instantiate(enemies[enemyInSpace], enemyBattleStations[i]);  //Instantiates enemy

            enemyGO.name = "enemy" + i;                        //Gives it a name and number

            currentEnemies[i] = enemyGO;                       //Assigns the enemy to a place on the array of all current enemies

            enemyUnit[i] = enemyGO.GetComponent <UnitStats>(); //Grabs the enemy's stats

            enemyParticles[i] = enemyGO.transform.GetChild(3).gameObject.GetComponent <ParticleSystem>();

            switch (enemyInSpace)
            {
            case 0:
                enemyUnit[i].affinity = 0;
                break;

            case 1:
                enemyUnit[i].affinity = 1;
                break;

            case 2:
                enemyUnit[i].affinity = 2;
                break;
            }
            //Checks if the enemy is numbered 0, 1, or 2, and sets affinity accordingly
            //affinity 0 = blessed (scarab)
            //affinity 1 = soma (mummy)
            //affinity 2 = cursed (dinosaur)

            animSpeed += .05f;

            enemyColor[i] = enemyGO.GetComponent <Image>();                     // Grabs the color of the enemy so it can be changed

            enemyHUDs[i].SetHUD(enemyUnit[i]);                                  //Sets the hud with the enemy stats

            enemyLightingEffects[i] = enemyGO.transform.GetChild(0).gameObject; //Assigns the lighting effects from the enemy

            enemyLightingEffects[i].SetActive(false);

            currentEnemies[i].GetComponent <Animator>().speed = animSpeed;

            enemyLightingEffects[i].transform.GetChild(1).gameObject.GetComponent <Animator>().speed = animSpeed;
        }//Assigns random enemies in the battle based on how many there are dictated by the randomly generated enemy amount

        #region InitialSetup

        playerUnit  = playerPrefab.GetComponent <UnitStats>();
        playerColor = playerPrefab.GetComponent <Image>();

        playerHUD.SetHUD(playerUnit);

        buttons.SetActive(true);

        if (GameObject.FindGameObjectsWithTag("Enemy0").Length > 0)
        {
            enemy0Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy0>();
        }
        if (GameObject.FindGameObjectsWithTag("Enemy1").Length > 0)
        {
            enemy1Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy1>();
        }
        if (GameObject.FindGameObjectsWithTag("Enemy2").Length > 0)
        {
            enemy2Attack = GameObject.FindGameObjectWithTag("EnemyStuff").GetComponent <Enemy2>();
        }
        //Assigns all the attack scripts to their respective enemies


        #endregion InitialSetup

        yield return(new WaitForSeconds(.5f));

        state = BattleStateFossil.PLAYERTURN;
        PlayerTurn();
    }//Does an initial setup of the battle
Ejemplo n.º 14
0
    // Update is called once per frame
    void Update()
    {
        if (opening)
        {
            Player_scripts.score = 0;
            text.text            = "SELECT LEVEL ○easy ×normal PRESS ANY BUTTON";
            Light.SetActive(false);
            Sword.SetActive(false);
            Player.SetActive(false);
            EnemyMaster.SetActive(false);
            Enemy0.SetActive(false);
            Enemy1.SetActive(false);
            Unitychan.SetActive(true);
            Cube.SetActive(false);

            if (_TimeCount + _Opening_Time < Time.time)
            {
                //rb.velocity = Vector3.zero;
                //animator.SetBool("Stop", true);
                Cube.SetActive(true);
                // ボタンイベント UnityのInput.GetButtonと同じ仕組み
                if (Input.GetKey("up"))
                {
                    _TimeCount = Time.time;
                    opening    = false;
                    countdown  = true;
                    NormalSpeed();
                }
                Debug.Log("Success");
                if (Input.GetKey("down"))
                {
                    _TimeCount = Time.time;
                    opening    = false;
                    countdown  = true;
                    HighSpeed();
                }
            }
            else
            {
                Unitychan.transform.position += transform.forward * 0.035f;
                animator.SetBool("Stop", false);
            }
        }
        if (countdown)
        {
            Light.SetActive(false);
            Sword.SetActive(false);
            Player.SetActive(false);
            EnemyMaster.SetActive(false);
            Enemy0.SetActive(false);
            Enemy1.SetActive(false);
            Unitychan.SetActive(false);
            Cube.SetActive(true);
            if (_TimeCount + _Countdown_Time1 > Time.time)
            {
                text.text = "3";
            }
            else if (_TimeCount + _Countdown_Time2 > Time.time)
            {
                text.text = "2";
            }
            else if (_TimeCount + _Countdown_Time3 > Time.time)
            {
                text.text = "1";
            }
            else
            {
                countdown  = false;
                playing    = true;
                _TimeCount = Time.time;
                Light.SetActive(false);
                Sword.SetActive(true);
                Unitychan.SetActive(false);
                Cube.SetActive(false);
                Player.SetActive(true);
                Player_scripts.Set();
                Enemy0.SetActive(true);
                Enemy0_scripts.Set();
                Enemy1.SetActive(true);
                Enemy1_scripts.Set();
                EnemyMaster.SetActive(true);
                Player_scripts.Move();
                Camera_scripts.Move();
                Light_scripts.Move();
                Sword_scripts.Move();
            }
        }


        if (playing)
        {
            if (Input.GetKey("up"))
            {
                Debug.Log("Circle Down");
                Light.SetActive(true);
                Sword.SetActive(false);
            }
            Debug.Log("Success");
            if (Input.GetKey("down"))
            {
                Debug.Log("Circle UP");
                Light.SetActive(false);
                Sword.SetActive(true);
            }
        }

        if (gameover)
        {
            if (_TimeCount + _Gameover_Time < Time.time)
            {
                ReStart();
                this.gameover = true;
                Light.SetActive(false);
                Sword.SetActive(false);
                Player.SetActive(false);
                EnemyMaster.SetActive(true);
                Enemy0.SetActive(false);
                Enemy1.SetActive(false);
                Unitychan.SetActive(false);
                Cube.SetActive(true);
                text.text = "Score " + Player_scripts.score + "press ○ to ReStart";

                if (Input.GetKey("up"))
                {
                    Opening();
                    _TimeCount = Time.time;
                    UnityChan_scripts.ReStart();
                    Light.SetActive(false);
                    Sword.SetActive(false);
                    Player.SetActive(false);
                    EnemyMaster.SetActive(false);
                    Enemy0.SetActive(false);
                    Enemy1.SetActive(false);
                    Unitychan.SetActive(true);
                    Cube.SetActive(false);
                    Enemy0_scripts.ReStart();
                }
            }
        }
    }
Ejemplo n.º 15
0
    void Start()
    {
        /* NOTE! We recommend that you limit the maximum frequency between frames.
         * This is because the controllers use Update() and not FixedUpdate(),
         * and yet need to update often enough to respond sufficiently fast.
         * Unity advises to keep this value "between 1/10th and 1/3th of a second."
         * However, even 100 milliseconds could seem slightly sluggish, so you
         * might want to experiment w/ reducing this value even more.
         * Obviously, this should only be relevant in case your framerare is starting
         * to lag. Most of the time, Update() should be called very regularly.
         */

        // If you have changed these names, please replace below "names"

        /*Left = GameObject.Find("LeftWall");
        *  Right = GameObject.Find("RightWall");
        *  Racket = GameObject.Find("Racket");*/
        try {
            Sword       = GameObject.Find("Sword");
            Light       = GameObject.Find("VolumetricLinePrefab");
            Player      = GameObject.Find("player");
            EnemyMaster = GameObject.Find("EnemyMaster");
            Unitychan   = GameObject.Find("unitychan");
            Cube        = GameObject.Find("Cube");
            Enemy0      = GameObject.Find("Enemy0");
            Enemy1      = GameObject.Find("Enemy1");
            Camera      = GameObject.Find("Main Camera");
            text        = GameObject.Find("Text").GetComponent <Text>();
            animator    = Unitychan.GetComponent <Animator>();
            rb          = Unitychan.GetComponent <Rigidbody>();
            opening     = true;
            countdown   = false;
            playing     = false;
            gameover    = false;
            clear       = false;
        } catch (Exception e) {
            Debug.Log("exception");
        }

        Light.SetActive(false);
        Sword.SetActive(false);
        Player.SetActive(false);
        EnemyMaster.SetActive(false);
        Enemy0.SetActive(false);
        Enemy1.SetActive(false);
        Unitychan.SetActive(false);
        Cube.SetActive(false);


        _Style          = new GUIStyle();
        _Style.fontSize = 20;

        Time.maximumDeltaTime = 0.1f;

        int count = UniMoveController.GetNumConnected();

        // Iterate through all connections (USB and Bluetooth)
        for (int i = 0; i < count; i++)
        {
            UniMoveController move = gameObject.AddComponent <UniMoveController>();             // It's a MonoBehaviour, so we can't just call a constructor

            // Remember to initialize!
            if (move.Init(i) == PSMove_Connect_Status.MoveConnect_NoData)
            {
                Destroy(move);                  // If it failed to initialize, destroy and continue on
                continue;
            }

            // This example program only uses Bluetooth-connected controllers
            PSMoveConnectionType conn = move.ConnectionType;
            if (conn == PSMoveConnectionType.Unknown || conn == PSMoveConnectionType.USB)
            {
                Destroy(move);
            }
            else
            {
                _Moves.Add(move);
                move.OnControllerDisconnected += HandleControllerDisconnected;

                // 球体LEDの基本セッティング 赤色
                move.SetLED(Color.red);
            }
        }
        _TimeCount = Time.time;
    }
Ejemplo n.º 16
0
    void Update()                                  //1フレームが更新されるたび呼び出される関数
    {
        foreach (UniMoveController move in _Moves) //PSMoveが正常的に繋がっている時に実行される
        {
            // Instead of this somewhat kludge-y check, we'd probably want to remove/destroy
            // the now-defunct controller in the disconnected event handler below.
            if (move.Disconnected)
            {
                continue;
            }

            // ボタンイベント UnityのInput.GetButtonと同じ仕組み
            if (move.GetButtonDown(PSMoveButton.Circle) && playing)
            {
                Debug.Log("Circle Down");
                Light.SetActive(true);
                Debug.Log("Circle 1");
                Sword.SetActive(false);
                Debug.Log("Circle 2");
            }
            Debug.Log("Success");
            if (move.GetButtonUp(PSMoveButton.Cross) && playing)
            {
                Debug.Log("Circle UP");
                Light.SetActive(false);
                Sword.SetActive(true);
            }

            // 押すボタンによって球体のLEDの色が変わる
            if (move.GetButtonDown(PSMoveButton.Circle))
            {
                move.SetLED(Color.red);
            }
            else if (move.GetButtonDown(PSMoveButton.Cross))
            {
                move.SetLED(Color.red);
            }
            else if (move.GetButtonDown(PSMoveButton.Square))
            {
                move.SetLED(Color.red);
            }
            else if (move.GetButtonDown(PSMoveButton.Triangle))
            {
                move.SetLED(Color.red);
            }
            else if (move.GetButtonDown(PSMoveButton.Move))
            {
                move.SetLED(Color.black);
            }

            // トリガーボタンが押されたら振動する
            move.SetRumble(move.Trigger);

            // transform.localPosition = move.Position;
            transform.localRotation = move.Orientation;

            // PSMoveの球体の座標によってオブジェクトの座標が変わる

            /*if ((float)PSMoveDetect.Sx > Left.transform.position.x + Racket.transform.localScale.x/2
             *  && (float)PSMoveDetect.Sx < Right.transform.position.x - Racket.transform.localScale.x/2) //ゲーム内ではみ出さないようにオブジェクトの移動範囲を制限
             * {
             *      transform.position = new Vector3(((float)PSMoveDetect.Sx), GetComponent<Rigidbody>().position.y, GetComponent<Rigidbody>().position.z);
             *      Left_touch = false;
             *      Right_touch = false;
             * }
             * else if ((float)PSMoveDetect.Sx <= Left.transform.position.x)
             * {
             *      transform.position = new Vector3(Left.transform.position.x + Racket.transform.localScale.x/2, GetComponent<Rigidbody>().position.y, GetComponent<Rigidbody>().position.z);
             *      Left_touch = true;
             * }
             *
             * else if ((float)PSMoveDetect.Sx >= Right.transform.position.x)
             * {
             *      transform.position = new Vector3(Right.transform.position.x - Racket.transform.localScale.x/2, GetComponent<Rigidbody>().position.y, GetComponent<Rigidbody>().position.z);
             *      Right_touch = true;
             * }*/


            //PSMoveの球体の座標によってオブジェクトに掛かる力量が変わる
            //rigidbody.AddForce(
            //                 transform.Right * Input.GetAxisRaw( "Horizontal" ) * Accel,
            //               ForceMode.Impulse );

            //if( (float)PSMoveDetect.Sx / 3 > 0)
            //	rigidbody.AddForce(transform.Right * ((float)PSMoveDetect.Sx), ForceMode.Impulse );


            if (IsCollided == true)             //関数OnCollisionEnterでIsCollidedの値がtrueに変わった場合
            {
                Timer += Time.deltaTime;        //0から時間を計る
                if (Timer < Collide_time)       //計った時間が0からCollide_time以内の場合
                {
                    move.SetLED(Color.magenta); //LEDの色を赤色にする
                    move.SetRumble(1f);         //1の硬度で振動する
                }
                else //計った時間が15msを超える場合
                {
                    Timer = 0; //タイマーを0に戻す
                    move.SetLED(Color.red);
                    IsCollided = false;
                }
            }

            if (opening)
            {
                Light.SetActive(false);
                Sword.SetActive(false);
                Player.SetActive(false);
                EnemyMaster.SetActive(false);
                Enemy0.SetActive(false);
                Enemy1.SetActive(false);
                Unitychan.SetActive(true);
                Cube.SetActive(false);

                if (_TimeCount + _Opening_Time < Time.time)
                {
                    rb.velocity = Vector3.zero;
                    animator.SetBool("Stop", true);
                    Cube.SetActive(true);
                    // ボタンイベント UnityのInput.GetButtonと同じ仕組み
                    if (move.GetButtonDown(PSMoveButton.Circle))
                    {
                        _TimeCount = Time.time;
                        opening    = false;
                        countdown  = true;
                    }
                    Debug.Log("Success");
                    if (move.GetButtonUp(PSMoveButton.Cross))
                    {
                        _TimeCount = Time.time;
                        opening    = false;
                        countdown  = true;
                    }
                }
                else
                {
                    Unitychan.transform.position += Unitychan.transform.forward * 0.01f;
                }
            }
            if (countdown)
            {
                Light.SetActive(false);
                Sword.SetActive(false);
                Player.SetActive(false);
                EnemyMaster.SetActive(false);
                Enemy0.SetActive(false);
                Enemy1.SetActive(false);
                Unitychan.SetActive(false);
                Cube.SetActive(true);
                if (_TimeCount + _Countdown_Time1 < Time.time)
                {
                    text.text = "1";
                }
                else if (_TimeCount + _Countdown_Time2 < Time.time)
                {
                    text.text = "2";
                }
                else if (_TimeCount + _Countdown_Time3 < Time.time)
                {
                    text.text = "3";
                }
                else
                {
                    countdown  = false;
                    playing    = true;
                    _TimeCount = Time.time;
                }
            }
        }
    }