Add Unity3D projects

This commit is contained in:
2024-03-09 19:25:59 +00:00
parent 1c71f24fab
commit 829289c881
4626 changed files with 441247 additions and 0 deletions

View File

@ -0,0 +1,84 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spaceship : MonoBehaviour {
// inspector settings
public Rigidbody rigidBody;
public GameObject bulletPrefab;
public GUIScript guiScript;
// public member data
[HideInInspector] public bool isInvulnerable = true;
// private member data
private float lastFiredTime = 0f;
void Start() {
Invoke ("MakeVulnerable", 2f);
}
private void MakeVulnerable() {
isInvulnerable = false;
}
// Update is called once per frame
void FixedUpdate () {
if (Input.GetKey(KeyCode.UpArrow))
rigidBody.AddForce(transform.forward * (rigidBody.mass * Time.fixedDeltaTime * 500f));
if (Input.GetKey(KeyCode.LeftArrow))
rigidBody.AddTorque(-transform.up * (rigidBody.mass * Time.deltaTime * 500f));
else if (Input.GetKey(KeyCode.RightArrow))
rigidBody.AddTorque(transform.up * (rigidBody.mass * Time.deltaTime * 500f));
// firing is only allowed at most once per 0.25 seconds
if (Input.GetKey (KeyCode.Space) && lastFiredTime + 0.25f <= Time.time) {
lastFiredTime = Time.time;
FireBullet ();
}
// methods for testing, should be removed for actual gameplay
if (Input.GetKeyDown(KeyCode.Escape))
{
Destroy(gameObject); // destroy spaceship
}
if (Input.GetKeyDown(KeyCode.Return))
{
// destroy all asteroids and start next level
foreach (GameObject asteroid in GameObject.FindGameObjectsWithTag("asteroid")) {
Destroy(asteroid);
GameManager.StartNextLevel();
}
}
}
void OnDestroy() {
GameManager.numLives--;
// if the spaceship has more lives, respawn
if (GameManager.numLives > 0) {
GameManager.CreatePlayerSpaceship();
}
// else destroy all asteroids and go to menu
else {
GameManager.highScore = GameManager.currentScore > GameManager.highScore ? GameManager.currentScore : GameManager.highScore;
foreach (GameObject asteroid in GameObject.FindGameObjectsWithTag("asteroid")) {
Destroy(asteroid);
}
guiScript.SwitchToMenu();
}
}
private void FireBullet() {
GameObject go = Instantiate(bulletPrefab);
go.transform.position = transform.position + transform.forward*3f;
go.transform.rotation = transform.rotation;
}
}