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