Exemple #1
0
 void DetectCollisions(GameObject projectile, int layerMask, bool stayActive)
 {
     Collider[] hits = Physics.OverlapBox(projectile.GetComponent <Collider>().bounds.center, projectile.GetComponent <Collider>().bounds.extents, projectile.transform.rotation, layerMask);
     for (int h = 0; (hits != null) && (h < hits.Length); h++)
     {
         projectile.SetActive(stayActive);
         explosion.transform.position = hits[h].gameObject.transform.position;
         explosion.GetComponent <ParticleSystem>().Emit(10);
         if (hits[h].gameObject.layer == 1)
         {
             KillPlayer();
             saucerTime = saucer.activeSelf ? Time.time + (saucer.transform.localScale.x > 0.2f ? 1f : 3f) : saucerTime;                  // Delay before firing at player. Small saucer waits longer as more accurate.
         }
         else if (hits[h].gameObject.layer == 5)
         {
             Score(projectile.layer == 6 ? 1000 : 0);
             KillSaucer();
         }
         else if (hits[h].gameObject.layer >= 2)
         {
             if (hits[h].gameObject.layer < 4)
             {
                 for (int p = 0; p < 2; p++)
                 {
                     asteroids.Add(CreateVectorObject(RandomDirection.ToString(), RandomAsteroidShape, hits[h].gameObject.transform.position, hits[h].gameObject.layer == 2 ? 0.2f : 0.1f, hits[h].gameObject.layer == 2 ? 3 : 4));                             // 0.2 = medium size, 0.1 = small asteroids
                 }
             }
             Score(projectile.layer == 6 ? (hits[h].gameObject.layer == 2 ? 20 : hits[h].gameObject.layer == 3 ? 50 : 100) : 0);
             asteroids.Remove(hits[h].gameObject);
             Destroy(hits[h].gameObject);
         }
     }
 }
Exemple #2
0
        public void GetRandomDirection(ref RandomDirection randomDirection)
        {
            int someDiraction = Randomyzer.rndAction.Next(0, 3);

            switch (someDiraction)
            {
            case 0:
                randomDirection = RandomDirection.Left;
                break;

            case 1:
                randomDirection = RandomDirection.Up;
                break;

            case 2:
                randomDirection = RandomDirection.Right;
                break;

            case 3:
                randomDirection = RandomDirection.Down;
                break;
            }
        }
Exemple #3
0
 void Start()
 {
     gameObject.GetComponent <Camera>().backgroundColor = Color.black;
     player                 = CreateVectorObject("Player", playershape, Vector3.zero, 0.2f, 1);
     playerBody             = player.AddComponent <Rigidbody>();
     playerBody.useGravity  = false;
     playerBody.constraints = RigidbodyConstraints.FreezePositionZ | RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationY | RigidbodyConstraints.FreezeRotationZ;
     playerBody.drag        = 0.5f;
     saucer                 = CreateVectorObject("Saucer", saucershape, Vector3.zero, 0.3f, 5, false);
     saucerTime             = Time.time + 15f;// + Random.value * 30f;
     for (int i = 0; i < (2 + level * 2); i++)
     {
         GameObject asteroid = CreateVectorObject(RandomDirection.ToString(), RandomAsteroidShape, RandomPosition, 0.4f, 2);             // 0.4 = Large size asteroids
         asteroids.Add(asteroid);
     }
     bullets[0] = CreateVectorObject("PlayerBullet", bulletshape, Vector3.zero, 0.1f, 6, false);           // Bullet 0 is player bullet
     bullets[1] = CreateVectorObject("SaucerBullet", bulletshape, Vector3.zero, 0.1f, 7, false);           // Bullet 1 is saucer bullet
     for (int i = 0; i < playerLives.Length; i++)
     {
         playerLives[i] = CreateVectorObject("Life", playershape, new Vector3(-6 + (i * 0.4f), 4, 0), 0.2f, 0, (i <= lives));
     }
     explosion = new GameObject("Explosion");
     explosion.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
     explosion.AddComponent <ParticleSystem>().Pause();
     explosion.GetComponent <ParticleSystemRenderer>().material = new Material(Shader.Find("Sprites/Default"));
     ParticleSystem.MainModule main = explosion.GetComponent <ParticleSystem>().main;
     main.startSize      = 0.025f;
     main.startLifetime  = 1f;
     main.startSpeed     = 0.7f;
     main.scalingMode    = ParticleSystemScalingMode.Shape;
     uiCanvas            = new GameObject("UI").AddComponent <Canvas>();
     uiCanvas.renderMode = RenderMode.ScreenSpaceOverlay;
     uiScore             = uiCanvas.gameObject.AddComponent <Text>();
     uiScore.font        = Resources.GetBuiltinResource(typeof(Font), "Arial.ttf") as Font;
     uiScore.fontSize    = 50;
 }
Exemple #4
0
 public RandomDirectionTests()
 {
     _random          = new Mock <IRandom>();
     _randomDirection = new RandomDirection(_random.Object);
 }