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); }
// 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"); } }
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); }
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); }
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); }
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); }
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; }
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); }
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); }
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; } }
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
// 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(); } } } }
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; }
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; } } } }