예제 #1
0
    internal void Ive_been_destroyed(Asteroid_Control asteroid_being_destroyed)
    {
        ParticleSystem explosion = Instantiate(big_bada_boom);

        explosion.transform.position = asteroid_being_destroyed.transform.position;
        explosion.Play();

        asteroids.Remove(asteroid_being_destroyed);

        if (asteroid_being_destroyed.Astroid_Level > 0)
        {
            Vector3 parent_Velocity = asteroid_being_destroyed.velocity;
            Vector3 perp_Velocity   = Vector3.Cross(parent_Velocity, Vector3.up).normalized;

            Asteroid_Control astroid1 = spawnNewAsteroid(), astroid2 = spawnNewAsteroid();
            astroid1.transform.position = asteroid_being_destroyed.transform.position;
            astroid2.transform.position = asteroid_being_destroyed.transform.position;

            astroid1.velocity = (parent_Velocity + perp_Velocity) * 1.25f;
            astroid2.velocity = (parent_Velocity - perp_Velocity) * 1.25f;

            asteroids.Add(astroid1);
            asteroids.Add(astroid2);

            astroid1.transform.localScale = (new Vector3(.5f, .5f, .5f));
            astroid2.transform.localScale = (new Vector3(.5f, .5f, .5f));

            astroid1.Astroid_Level = asteroid_being_destroyed.Astroid_Level - 1;
            astroid2.Astroid_Level = asteroid_being_destroyed.Astroid_Level - 1;
        }
    }
예제 #2
0
    private bool CanLockOn(ShipControl ship, Asteroid_Control asteroid)
    {
        Vector3 spaceship_to_asteriod = asteroid.transform.position - ship.transform.position;

        return(((Vector3.Dot(ship.transform.forward, spaceship_to_asteriod) / (spaceship_to_asteriod.magnitude)) > 0.8f) &&
               (Vector3.Distance(ship.transform.position, asteroid.transform.position) < MAX_LOC_ON_DISTANCE));
    }
예제 #3
0
    //TMPro Text health_Display;
    // Start is called before the first frame update
    void Start()
    {
        my_asteroid = gameObject.GetComponent <Asteroid_Control>();
        GameObject newGO = new GameObject("Health Text");

        newGO.transform.parent = transform;

        newGO.transform.localPosition = new Vector3(0, 8, 0);
        ourHealthDisplay = newGO.AddComponent <TextMeshPro>();
        if (ourHealthDisplay)
        {
            ourHealthDisplay.text = health.ToString();
        }
        else
        {
            print("Warning: No TMP component found");
        }


        ourHealthDisplay.rectTransform.sizeDelta = new Vector2(10, 20);
        //ourHealthDisplay.transform.position = new Vector3(0, 8, 0);
        ourHealthDisplay.alignment = TextAlignmentOptions.Top;

        ourHealthDisplay.enabled = isDisplayed;
    }
예제 #4
0
    //test
    private Asteroid_Control spawnNewAsteroid(Asteroid_Control asteroid_Control)
    {
        GameObject new_asteroid = Instantiate(asteroid_clone_template);

        Asteroid_Control new_asteroid_script = new_asteroid.GetComponent <Asteroid_Control>();

        new_asteroid_script.I_am_the_Manager(this);
        new_asteroid_script.spawn_children_o_parent_asteroid(asteroid_Control);
        return(new_asteroid_script);
    }
예제 #5
0
    private Asteroid_Control spawnNewAsteroid()
    {
        GameObject new_asteroid = Instantiate(asteroid_clone_template);

        Asteroid_Control new_asteroid_script = new_asteroid.GetComponent <Asteroid_Control>();

        new_asteroid_script.I_am_the_Manager(this);
        new_asteroid_script.set_to_random_position_and_rotation(game_radius);
        return(new_asteroid_script);
    }
예제 #6
0
    internal void spawn_children_o_parent_asteroid(Asteroid_Control asteroid_Control)
    {
        transform.position = asteroid_Control.transform.position;
        axis_od_rotation   = new Vector3(UnityEngine.Random.Range(-1000.0f, 1000.0f), UnityEngine.Random.Range(-1000.0f, 1000.0f), UnityEngine.Random.Range(-1000.0f, 1000.0f));
        axis_od_rotation.Normalize();
        velocity = new Vector3(UnityEngine.Random.Range(-1000.0f, 1000.0f), UnityEngine.Random.Range(-1000.0f, 1000.0f), UnityEngine.Random.Range(-1000.0f, 1000.0f));

        velocity.Normalize();
        velocity *= speed;

        transform.localScale = (new Vector3(.5f, .5f, .5f));
    }
예제 #7
0
    private void OnCollisionEnter(Collision collision)
    {
        Asteroid_Control asteroid = collision.gameObject.GetComponent <Asteroid_Control>();

        if (asteroid)
        {
            shield       -= 10;
            shieldOpacity = shield / 200;
            shieldRender.material.color = new Color(0, 0, 1f, shieldOpacity);
            //registerHit(50);

            print(shield);
        }
    }
예제 #8
0
    // Update is called once per frame
    void Update()
    {
        acceleration = Vector3.zero;
        // acceleration += gravity * Vector3.down;
        Debug.DrawRay(transform.position, 50 * transform.forward);
        // Debug.DrawLine(transform.position, theCube.transform.position);
        //  Vector3 spaceship_to_cube = theCube.transform.position - transform.position;

        //  if ((Vector3.Dot(spaceship_to_cube, transform.forward) / (spaceship_to_cube.magnitude * transform.forward.magnitude)) > 0.8f)
        //print("Locking On");
        //else
        //print("Cannot Lock on");
        // print((Vector3.Dot(spaceship_to_cube, transform.forward)/(spaceship_to_cube.magnitude * transform.forward.magnitude)));

        if (Input.GetKey(KeyCode.LeftArrow))
        {
            transform.Rotate(Vector3.forward, rotationSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.RightArrow))
        {
            transform.Rotate(Vector3.forward, -rotationSpeed * Time.deltaTime);
        }


        if (Input.GetKey(KeyCode.UpArrow))
        {
            transform.Rotate(Vector3.right, rotationSpeed * Time.deltaTime);
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            transform.Rotate(Vector3.right, -rotationSpeed * Time.deltaTime);
        }

        if (Input.GetKey(KeyCode.Space))
        {
            acceleration += spaceship_thrust_value * transform.forward;
        }
        acceleration -= drag_constant * velocity;

        // Faun Schutz - changed controls for missiles firing to two separate buttons
        if (Input.GetKeyDown(KeyCode.R))
        {
            fire_MissileRight();
        }
        if (Input.GetKeyDown(KeyCode.E))
        {
            fire_MissileLeft();
        }

        if (Input.GetKey(KeyCode.L))
        {
            fire_laser();
        }


        if (Input.GetKeyDown(KeyCode.P))
        {
            if (current_locked_on)
            {
                current_locked_on.disselect();
            }

            current_locked_on = the_manager.get_me_any_asteroid(this);
        }

        if (Input.GetKey(KeyCode.O))
        {
            // Check to see if first time lock on, if so...
            if (!is_aquiring_lock)
            {
                // Add Timer Compnent
                lock_timer = gameObject.AddComponent <Timer>();
                lock_timer.Timer_Setup(true, 4.0f);
                is_aquiring_lock = true;
                print(lock_timer.current_time());

                if (lock_timer.current_time() < 0)
                {
                    print("Lock-on Aquired");
                }
            }
            else
            {
                if (is_aquiring_lock)
                {
                    is_aquiring_lock = false;
                    Destroy(lock_timer);
                }
            }
        }

        velocity           += acceleration * Time.deltaTime;
        transform.position += velocity * Time.deltaTime;


        myCamera.updatePosition(transform);
    }