This commit is contained in:
Gerard Gascón 2025-04-24 17:09:22 +02:00
commit 16da8e4dde
333 changed files with 109229 additions and 0 deletions

View file

@ -0,0 +1,144 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BigEnemyController : MonoBehaviour, IPooledObject{
public float speed;
public GameObject healthBar;
public GameObject enemy;
public float bulletDamage;
public float bigBulletDamage;
public GameObject spawnParticles;
public Color level1Color;
public Color level2Color;
public Color level3Color;
public SpriteRenderer spriteRenderer;
Animator anim;
bool ready;
bool spawned;
BoxCollider2D boxCol;
public int maxHp;
float hp;
GameController gameController;
Rigidbody2D rb2d;
Transform target;
Vector2 targetPos;
public void OnObjectSpawn(){
gameController = FindObjectOfType<GameController>();
if (gameController.level == 1 || gameController.level == 0){
spriteRenderer.color = level1Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level1Color;
}
if (gameController.level == 2){
spriteRenderer.color = level2Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level2Color;
}
if (gameController.level == 3){
spriteRenderer.color = level3Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level3Color;
}
anim = GetComponent<Animator>();
Invoke(nameof(StopAnimation), 1f);
anim.SetBool("Spawned", false);
Invoke(nameof(Ready), 2f);
ready = false;
spawned = false;
enemy.transform.rotation = Quaternion.Euler(Vector3.zero);
boxCol = GetComponent<BoxCollider2D>();
boxCol.enabled = false;
spawnParticles.SetActive(true);
spawnParticles.GetComponent<ParticleSystem>().Play();
hp = maxHp;
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update(){
if (ready){
targetPos = target.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
enemy.transform.rotation = Quaternion.Euler(0f, 0f, rotZ);
}else if (spawned){
Vector2 targetPos = target.transform.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
enemy.transform.rotation = Quaternion.Euler(0f, 0f, rotZ - 90);
}
}
void FixedUpdate(){
if (ready){
rb2d.MovePosition(rb2d.position + (targetPos.normalized * speed * Time.fixedDeltaTime));
}
}
void OnTriggerEnter2D(Collider2D col){
if(col.CompareTag("Bullet")){
if(hp > 0 && hp > bulletDamage){
hp -= bulletDamage;
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
}else if(hp > 0 && hp <= bulletDamage){
hp = 0;
ScreenShake.Shake(1f, .15f);
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", transform.position, Quaternion.identity);
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
gameObject.SetActive(false);
}
else if(hp <= 0){
ScreenShake.Shake(1f, .15f);
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", transform.position, Quaternion.identity);
gameObject.SetActive(false);
}
}
if (col.CompareTag("BigBullet")){
if (hp > 0 && hp > bulletDamage){
hp -= bigBulletDamage;
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
}else if (hp > 0 && hp <= bulletDamage){
hp = 0;
ScreenShake.Shake(1f, .15f);
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", transform.position, Quaternion.identity);
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
gameObject.SetActive(false);
}else if (hp == 0){
ScreenShake.Shake(1f, .15f);
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", transform.position, Quaternion.identity);
gameObject.SetActive(false);
}
}
}
#region OnSpawn
void StopAnimation(){
anim.SetBool("Spawned", true);
}
void Ready(){
spawned = true;
Invoke(nameof(StartRunning), 0.5f);
Invoke(nameof(EnableCollider), 0.25f);
}
void EnableCollider(){
boxCol.enabled = true;
}
void StartRunning(){
ready = true;
}
#endregion
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 02c265ccaecb24e4bb6817b3fcbc4467
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,119 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CircleEnemyController : MonoBehaviour, IPooledObject{
public float speed;
public GameObject spikes2;
[HideInInspector]
public int hp, maxHp = 2;
public GameObject spawnParticles;
public Color level1Color;
public Color level2Color;
public Color level3Color;
public SpriteRenderer[] spriteRenderers;
GameController gameController;
Animator anim;
CircleCollider2D cirCol;
bool ready;
Rigidbody2D rb2d;
Transform target;
Vector2 targetPos;
public void OnObjectSpawn(){
gameController = FindObjectOfType<GameController>();
if (gameController.level == 1 || gameController.level == 0){
foreach(SpriteRenderer r in spriteRenderers){
r.color = level1Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level1Color;
}
if (gameController.level == 2){
foreach (SpriteRenderer r in spriteRenderers){
r.color = level2Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level2Color;
}
if (gameController.level == 3){
foreach (SpriteRenderer r in spriteRenderers){
r.color = level3Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level3Color;
}
anim = GetComponent<Animator>();
anim.SetBool("Spawned", false);
cirCol = GetComponent<CircleCollider2D>();
cirCol.enabled = false;
hp = maxHp;
spikes2.SetActive(true);
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
rb2d = GetComponent<Rigidbody2D>();
ready = false;
Invoke(nameof(StopAnimation), 1f);
Invoke(nameof(Ready), 2f);
}
// Update is called once per frame
void Update(){
targetPos = target.position - transform.position;
}
void FixedUpdate(){
if (ready){
rb2d.MovePosition(rb2d.position + (targetPos.normalized * speed * Time.fixedDeltaTime));
}
}
void OnTriggerEnter2D(Collider2D col){
if (col.CompareTag("Bullet") && hp == 2){
spikes2.SetActive(false);
hp = 1;
}else if(col.CompareTag("Bullet") && hp == 1){
gameObject.SetActive(false);
AudioManager.instance.Play("EnemyDeath");
hp = 0;
ScreenShake.Shake(1f, .15f);
ObjectPooler.Instance.SpawnFromPool("CircleEnemyDeath", transform.position, Quaternion.identity);
}
if (col.CompareTag("BigBullet") && hp == 2){
gameObject.SetActive(false);
AudioManager.instance.Play("EnemyDeath");
hp = 0;
ScreenShake.Shake(1f, .15f);
ObjectPooler.Instance.SpawnFromPool("CircleEnemyDeath", transform.position, Quaternion.identity);
}else if (col.CompareTag("BigBullet") && hp == 1){
gameObject.SetActive(false);
AudioManager.instance.Play("EnemyDeath");
hp = 0;
ScreenShake.Shake(1f, .15f);
ObjectPooler.Instance.SpawnFromPool("CircleEnemyDeath", transform.position, Quaternion.identity);
}
}
#region OnSpawn
void StopAnimation(){
anim.SetBool("Spawned", true);
}
void Ready(){
Invoke(nameof(StartRunning), 0.5f);
Invoke(nameof(EnableCollider), 0.25f);
}
void EnableCollider(){
cirCol.enabled = true;
}
void StartRunning(){
ready = true;
}
#endregion
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e63ace73998409c449c98a0737a00844
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,104 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyController : MonoBehaviour, IPooledObject{
public float speed;
public GameObject enemy;
public GameObject spawnParticles;
public Color level1Color;
public Color level2Color;
public Color level3Color;
GameController gameController;
Animator anim;
bool ready;
bool spawned;
BoxCollider2D boxCol;
Rigidbody2D rb2d;
Transform target;
Vector2 targetPos;
public void OnObjectSpawn(){
gameController = FindObjectOfType<GameController>();
if(gameController.level == 1 || gameController.level == 0){
GetComponentInChildren<SpriteRenderer>().color = level1Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level1Color;
}
if (gameController.level == 2){
GetComponentInChildren<SpriteRenderer>().color = level2Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level2Color;
}
if (gameController.level == 3){
GetComponentInChildren<SpriteRenderer>().color = level3Color;
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level3Color;
}
anim = GetComponent<Animator>();
anim.SetBool("Spawned", false);
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
rb2d = GetComponent<Rigidbody2D>();
boxCol = GetComponentInChildren<BoxCollider2D>();
boxCol.enabled = false;
spawnParticles.SetActive(true);
spawnParticles.GetComponent<ParticleSystem>().Play();
ready = false;
spawned = false;
Invoke(nameof(StopAnimation), 1f);
Invoke(nameof(Ready), 2f);
}
// Update is called once per frame
void Update(){
if (ready){
targetPos = target.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
enemy.transform.rotation = Quaternion.Euler(0f, 0f, rotZ);
}else if (spawned){
Vector2 targetPos = target.transform.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
enemy.transform.rotation = Quaternion.Euler(0f, 0f, rotZ);
}
}
void FixedUpdate(){
if (ready){
rb2d.MovePosition(rb2d.position + (targetPos.normalized * speed * Time.fixedDeltaTime));
}
}
void OnTriggerEnter2D(Collider2D col){
if (col.CompareTag("Bullet") || col.CompareTag("BigBullet")){
ScreenShake.Shake(1f, .15f);
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", col.transform.position, Quaternion.identity);
gameObject.SetActive(false);
}
}
#region OnSpawn
void StopAnimation(){
anim.SetBool("Spawned", true);
}
void Ready(){
spawned = true;
Invoke(nameof(StartRunning), 0.5f);
Invoke(nameof(EnableCollider), 0.25f);
}
void EnableCollider(){
boxCol.enabled = true;
}
void StartRunning(){
ready = true;
}
#endregion
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 238ef62119f1ac144b9517dd0dfa510d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,121 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RocketEnemy : MonoBehaviour, IPooledObject{
public float speed;
public GameObject particles;
public PolygonCollider2D polCol;
public GameObject spawnParticles;
public GameObject rocket;
public Color level1Color;
public Color level2Color;
public Color level3Color;
public SpriteRenderer[] spriteRenderers;
GameController gameController;
Animator anim;
bool spawned;
bool ready;
GameObject target;
public void OnObjectSpawn(){
gameController = FindObjectOfType<GameController>();
if (gameController.level == 1 || gameController.level == 0){
foreach (SpriteRenderer r in spriteRenderers){
r.color = level1Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level1Color;
}
if (gameController.level == 2){
foreach (SpriteRenderer r in spriteRenderers){
r.color = level2Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level2Color;
}
if (gameController.level == 3){
foreach (SpriteRenderer r in spriteRenderers){
r.color = level3Color;
}
ParticleSystem ps = spawnParticles.GetComponent<ParticleSystem>();
var main = ps.main;
main.startColor = level3Color;
}
anim = GetComponent<Animator>();
Invoke(nameof(StopAnimation), 1f);
anim.SetBool("Spawned", false);
particles.SetActive(false);
ready = false;
spawned = false;
target = GameObject.FindGameObjectWithTag("Player");
Invoke(nameof(Ready), 2f);
polCol.enabled = false;
spawnParticles.SetActive(true);
spawnParticles.GetComponent<ParticleSystem>().Play();
}
// Update is called once per frame
void Update(){
if (ready){
transform.Translate(Vector3.up * speed * Time.deltaTime);
}else if(spawned){
Vector2 targetPos = target.transform.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ - 90);
}else if (!spawned){
Vector2 targetPos = target.transform.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
rocket.transform.rotation = Quaternion.Euler(0f, 0f, rotZ - 90);
}
}
void OnCollisionEnter2D(Collision2D col){
if(col.gameObject.CompareTag("Wall")){
Vector2 targetPos = target.transform.position - transform.position;
float rotZ = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, rotZ - 90);
}
if(col.gameObject.CompareTag("Player")){
ObjectPooler.Instance.SpawnFromPool("RocketEnemyDeath", transform.position, Quaternion.identity);
AudioManager.instance.Play("EnemyDeath");
gameObject.SetActive(false);
ScreenShake.Shake(1f, .15f);
}
}
void OnTriggerEnter2D(Collider2D col){
if (col.CompareTag("Bullet") || col.CompareTag("BigBullet")){
AudioManager.instance.Play("EnemyDeath");
ObjectPooler.Instance.SpawnFromPool("RocketEnemyDeath", transform.position, Quaternion.identity);
ScreenShake.Shake(1f, .15f);
gameObject.SetActive(false);
}
}
#region OnSpawn
void StopAnimation(){
anim.SetBool("Spawned", true);
}
void Ready(){
Invoke(nameof(StartRunning), 1f);
spawned = true;
Invoke(nameof(EnableCollider), 0.5f);
rocket.transform.rotation = Quaternion.Euler(Vector3.zero);
}
void EnableCollider(){
polCol.enabled = true;
}
void StartRunning(){
ready = true;
particles.SetActive(true);
}
#endregion
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 347d5ccf364673941894f24f09c1f7af
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: