Added health, respawning and Bullet spawners
This commit is contained in:
@@ -6,12 +6,14 @@ public class Enemy : MonoBehaviour
|
||||
{
|
||||
public int baseScore;
|
||||
public PatternTypes[] patterns;
|
||||
public int CurrentPattern;
|
||||
public int CurrentPattern = 0;
|
||||
private BulletManager bulletManager;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
bulletManager = GameObject.Find("BulletManager").GetComponent<BulletManager>();
|
||||
Attack();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -19,10 +21,10 @@ public class Enemy : MonoBehaviour
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void Attack()
|
||||
{
|
||||
//Spawn pattern
|
||||
bulletManager.SpawnPattern(patterns[CurrentPattern], this);
|
||||
}
|
||||
|
||||
public void Consumed()
|
||||
@@ -31,9 +33,14 @@ public class Enemy : MonoBehaviour
|
||||
}
|
||||
|
||||
|
||||
private void OnPatternFinished()
|
||||
public void OnPatternFinished()
|
||||
{
|
||||
//Increment pattern
|
||||
CurrentPattern++;
|
||||
if (CurrentPattern >= patterns.Length)
|
||||
{
|
||||
//Destroy(gameObject);
|
||||
}
|
||||
Attack();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
8
Assets/Scripts/Game/Patterns.meta
Normal file
8
Assets/Scripts/Game/Patterns.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f0f077c8ee165d49b65384c60248459
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
28
Assets/Scripts/Game/Patterns/RotatingPattern.cs
Normal file
28
Assets/Scripts/Game/Patterns/RotatingPattern.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using static UnityEngine.ParticleSystem;
|
||||
|
||||
public class RotatingPattern : Pattern
|
||||
{
|
||||
public float speed = 1;
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void OnPatternUpdate()
|
||||
{
|
||||
// transform.Rotate(Vector3.up, speed * Time.deltaTime);
|
||||
|
||||
//find all particle systems in children
|
||||
ParticleSystem[] systems = GetComponentsInChildren<ParticleSystem>();
|
||||
foreach (ParticleSystem system in systems)
|
||||
{
|
||||
ShapeModule shape = system.shape;
|
||||
shape.rotation = new Vector3(0, shape.rotation.y + speed * Time.deltaTime, 0);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/Game/Patterns/RotatingPattern.cs.meta
Normal file
11
Assets/Scripts/Game/Patterns/RotatingPattern.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b5d3d6fc4fb04da4bbc0ebf8895d9423
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -8,4 +8,14 @@ public class Pickup : MonoBehaviour
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void OnTriggerEnter(Collider other)
|
||||
{
|
||||
Debug.Log("Pickup");
|
||||
if (other.gameObject.tag == "Player")
|
||||
{
|
||||
OnPickup();
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,20 +4,26 @@ using UnityEngine;
|
||||
|
||||
public class Extinguisher : Pickup
|
||||
{
|
||||
public Player player;
|
||||
|
||||
[SerializeField]
|
||||
private float amount;
|
||||
|
||||
public override void OnPickup()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
// we have to stop the particle system before making changes
|
||||
ParticleSystem system = player.trail.GetComponent<ParticleSystem>();
|
||||
system.Stop();
|
||||
|
||||
system.startLifetime *= amount;
|
||||
|
||||
system.Play();
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ public class Player : MonoBehaviour
|
||||
{
|
||||
public float health;
|
||||
public float speed;
|
||||
public float trailLength;
|
||||
public GameObject trail;
|
||||
public float rotationSpeed;
|
||||
public float direction;
|
||||
@@ -40,14 +39,27 @@ public class Player : MonoBehaviour
|
||||
if (isLit)
|
||||
{
|
||||
health -= 100.0f * Time.deltaTime;
|
||||
Debug.Log("Health: " + health);
|
||||
}
|
||||
|
||||
//if health below 0 die
|
||||
if (health <= 0)
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
|
||||
/* Todo: Improve player movement
|
||||
* Turning doesn't feel right, should be snappier
|
||||
*/
|
||||
|
||||
|
||||
//move player forward
|
||||
transform.position += transform.forward * speed * Time.deltaTime;
|
||||
//rotate based on direction
|
||||
transform.Rotate(0, direction * rotationSpeed * 2 * Time.deltaTime, 0);
|
||||
|
||||
|
||||
|
||||
float horzExtent = camera.orthographicSize * Screen.width / Screen.height;
|
||||
float vertExtent = camera.orthographicSize;
|
||||
|
||||
@@ -83,6 +95,14 @@ public class Player : MonoBehaviour
|
||||
|
||||
private void OnParticleCollision(GameObject other)
|
||||
{
|
||||
Debug.Log("Particle Collision" + other.name);
|
||||
ParticleSystem ps = trail.GetComponent<ParticleSystem>();
|
||||
ps.Stop();
|
||||
//TODO: refactor magic number to a variable or constant
|
||||
ps.startLifetime += 2;
|
||||
ps.Play();
|
||||
|
||||
|
||||
if (other == trail)
|
||||
{
|
||||
//Debug.Log(other.name);
|
||||
|
||||
Reference in New Issue
Block a user