init
This commit is contained in:
commit
16da8e4dde
333 changed files with 109229 additions and 0 deletions
34
Assets/Scripts/Player/BigBulletController.cs
Normal file
34
Assets/Scripts/Player/BigBulletController.cs
Normal file
|
@ -0,0 +1,34 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class BigBulletController : MonoBehaviour{
|
||||
|
||||
public float speed;
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
transform.Translate(Vector2.right * speed * Time.deltaTime);
|
||||
}
|
||||
|
||||
void OnTriggerEnter2D(Collider2D col){
|
||||
if(col.gameObject.tag == "Enemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("EnemyDeath", col.transform.position, Quaternion.identity);
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if (col.gameObject.tag == "BigEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if (col.gameObject.tag == "CircleEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if (col.gameObject.tag == "RocketEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("RocketEnemyDeath", col.transform.position, Quaternion.identity);
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if(col.gameObject.tag == "Wall"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/BigBulletController.cs.meta
Normal file
11
Assets/Scripts/Player/BigBulletController.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d1feee7c3bd7bc445b8e27a2344314d0
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
34
Assets/Scripts/Player/BulletController.cs
Normal file
34
Assets/Scripts/Player/BulletController.cs
Normal file
|
@ -0,0 +1,34 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class BulletController : MonoBehaviour{
|
||||
|
||||
public float speed;
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
transform.Translate(Vector2.right * speed * Time.deltaTime);
|
||||
}
|
||||
|
||||
void OnTriggerEnter2D(Collider2D col){
|
||||
if(col.gameObject.tag == "Enemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
if(col.gameObject.tag == "BigEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if (col.gameObject.tag == "CircleEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
}
|
||||
if (col.gameObject.tag == "RocketEnemy"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
if (col.gameObject.tag == "Wall"){
|
||||
ObjectPooler.Instance.SpawnFromPool("BulletImpact", transform.position, Quaternion.identity);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/BulletController.cs.meta
Normal file
11
Assets/Scripts/Player/BulletController.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f73c7d199b07b804da32fc3d5e36dd51
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
161
Assets/Scripts/Player/PlayerController.cs
Normal file
161
Assets/Scripts/Player/PlayerController.cs
Normal file
|
@ -0,0 +1,161 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
public class PlayerController : MonoBehaviour{
|
||||
|
||||
[Header("Statistics")]
|
||||
public float speed;
|
||||
public float shootingSpeed;
|
||||
public float invulnerableTime = 2f;
|
||||
[HideInInspector]
|
||||
public float defaultSpeed;
|
||||
[HideInInspector]
|
||||
public int gunSelected;
|
||||
[Header("Guns")]
|
||||
public GameObject[] gun;
|
||||
|
||||
GameController gameController;
|
||||
Animator anim;
|
||||
PlayerHealth health;
|
||||
bool dead;
|
||||
|
||||
Rigidbody2D rb2d;
|
||||
|
||||
PlayerInput playerInput;
|
||||
string currentControlScheme;
|
||||
Vector2 aim;
|
||||
Vector2 mov;
|
||||
|
||||
#region Input
|
||||
public void PlayerMove(InputAction.CallbackContext state){
|
||||
mov = state.ReadValue<Vector2>();
|
||||
}
|
||||
public void PlayerAim(InputAction.CallbackContext state){
|
||||
aim = state.ReadValue<Vector2>();
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Awake(){
|
||||
playerInput = GetComponent<PlayerInput>();
|
||||
gameController = FindObjectOfType<GameController>();
|
||||
anim = GetComponent<Animator>();
|
||||
health = GetComponent<PlayerHealth>();
|
||||
defaultSpeed = speed;
|
||||
rb2d = GetComponent<Rigidbody2D>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
RotateGun();
|
||||
|
||||
if(health.hp <= 0 && !dead){
|
||||
Time.timeScale = 0;
|
||||
ObjectPooler.Instance.SpawnFromPool("PlayerDeath", transform.position, Quaternion.identity);
|
||||
Camera.main.GetComponent<Animator>().SetBool("GameOver", true);
|
||||
dead = true;
|
||||
AudioManager.instance.Stop("MainTheme");
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
if(playerInput.currentControlScheme != currentControlScheme){
|
||||
currentControlScheme = playerInput.currentControlScheme;
|
||||
}
|
||||
}
|
||||
|
||||
void RotateGun(){
|
||||
if(currentControlScheme == "Gamepad"){
|
||||
if(aim.magnitude > .1f){
|
||||
Quaternion newRot = Quaternion.Euler(0f, 0f, Mathf.Atan2(aim.y, aim.x) * Mathf.Rad2Deg);
|
||||
gun[gunSelected].transform.rotation = newRot;
|
||||
}
|
||||
}else{
|
||||
Vector2 mousePos = Camera.main.ScreenToWorldPoint(aim) - transform.position;
|
||||
float rotZ = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
|
||||
gun[gunSelected].transform.rotation = Quaternion.Euler(0f, 0f, rotZ);
|
||||
}
|
||||
}
|
||||
|
||||
void FixedUpdate(){
|
||||
rb2d.MovePosition(rb2d.position + (Vector2.ClampMagnitude(mov, 1f) * speed * Time.deltaTime));
|
||||
}
|
||||
|
||||
void OnTriggerEnter2D(Collider2D col){
|
||||
if(col.CompareTag("Gun1")){
|
||||
gunSelected = 0;
|
||||
for (int i = 0; i < gun.Length; i++){
|
||||
if (i == gunSelected){
|
||||
gun[i].SetActive(true);
|
||||
}else{
|
||||
gun[i].SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(col.CompareTag("Gun2")){
|
||||
gunSelected = 1;
|
||||
for (int i = 0; i < gun.Length; i++){
|
||||
if (i == gunSelected){
|
||||
gun[i].SetActive(true);
|
||||
}else{
|
||||
gun[i].SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(col.CompareTag("Gun3")){
|
||||
gunSelected = 2;
|
||||
for (int i = 0; i < gun.Length; i++){
|
||||
if (i == gunSelected){
|
||||
gun[i].SetActive(true);
|
||||
}else{
|
||||
gun[i].SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
bool damaged;
|
||||
void OnCollisionEnter2D(Collision2D col){
|
||||
if(col.gameObject.CompareTag("Enemy") && !damaged || col.gameObject.CompareTag("BigEnemy") && !damaged){
|
||||
anim.SetBool("Damaged", true);
|
||||
if(gameController.level == 2){
|
||||
health.TakeDamage(6);
|
||||
}else if(gameController.level == 3){
|
||||
health.TakeDamage(7);
|
||||
}else{
|
||||
health.TakeDamage(5);
|
||||
}
|
||||
AudioManager.instance.Play("Hit");
|
||||
Invoke(nameof(Damaged), invulnerableTime);
|
||||
damaged = true;
|
||||
}
|
||||
if (col.gameObject.CompareTag("RocketEnemy")){
|
||||
anim.SetBool("Damaged", true);
|
||||
if (gameController.level == 2){
|
||||
health.TakeDamage(10);
|
||||
}else if (gameController.level == 3){
|
||||
health.TakeDamage(13);
|
||||
}else{
|
||||
health.TakeDamage(7);
|
||||
}
|
||||
AudioManager.instance.Play("Hit");
|
||||
Invoke(nameof(Damaged), invulnerableTime);
|
||||
damaged = true;
|
||||
}
|
||||
}
|
||||
|
||||
void Damaged(){
|
||||
anim.SetBool("Damaged", false);
|
||||
damaged = false;
|
||||
}
|
||||
|
||||
void OnCollisionStay2D(Collision2D col){
|
||||
if(col.gameObject.CompareTag("CircleEnemy") && !damaged){
|
||||
if(col.gameObject.GetComponent<CircleEnemyController>().hp == 2){
|
||||
health.TakeDamage(0.1f);
|
||||
}else if(col.gameObject.GetComponent<CircleEnemyController>().hp == 1){
|
||||
health.TakeDamage(0.05f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerController.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerController.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: dc967a4d344b6a049aa2cfb3d360c356
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
25
Assets/Scripts/Player/PlayerHealth.cs
Normal file
25
Assets/Scripts/Player/PlayerHealth.cs
Normal file
|
@ -0,0 +1,25 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PlayerHealth : MonoBehaviour{
|
||||
|
||||
public int maxHp;
|
||||
[HideInInspector]
|
||||
public float hp;
|
||||
public GameObject healthBar;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
hp = maxHp;
|
||||
}
|
||||
|
||||
public void TakeDamage(float damage){
|
||||
hp -= damage;
|
||||
if (hp > 0 && hp > damage){
|
||||
healthBar.transform.localScale = new Vector2(hp / maxHp, healthBar.transform.localScale.y);
|
||||
}else if (hp < damage){
|
||||
healthBar.transform.localScale = new Vector2(0, healthBar.transform.localScale.y);
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/PlayerHealth.cs.meta
Normal file
11
Assets/Scripts/Player/PlayerHealth.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e69c8297fda776a449269ef7f7b4fb6b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
67
Assets/Scripts/Player/Shoot.cs
Normal file
67
Assets/Scripts/Player/Shoot.cs
Normal file
|
@ -0,0 +1,67 @@
|
|||
//#define TEST_DEATH
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
public class Shoot : MonoBehaviour{
|
||||
|
||||
public float[] timeBetweenShots;
|
||||
public Transform[] firePoint;
|
||||
public Transform secondaryFirePoint;
|
||||
|
||||
PlayerController player;
|
||||
float shotCounter;
|
||||
|
||||
bool shooting;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
player = GetComponent<PlayerController>();
|
||||
}
|
||||
|
||||
public void PlayerShoot(InputAction.CallbackContext state){
|
||||
if (state.performed){
|
||||
shooting = true;
|
||||
#if TEST_DEATH
|
||||
FindObjectOfType<HealthBar>().hp = 0f;
|
||||
#endif
|
||||
}
|
||||
if (state.canceled){
|
||||
shooting = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
if (shooting && player.gunSelected == 0){
|
||||
shotCounter -= Time.deltaTime;
|
||||
if (shotCounter <= 0){
|
||||
shotCounter = timeBetweenShots[0];
|
||||
AudioManager.instance.Play("Shoot");
|
||||
ObjectPooler.Instance.SpawnFromPool("Bullet", firePoint[0].position, firePoint[0].rotation);
|
||||
player.speed = player.shootingSpeed;
|
||||
}
|
||||
}else if(shooting && player.gunSelected == 1){
|
||||
shotCounter -= Time.deltaTime;
|
||||
if (shotCounter <= 0){
|
||||
shotCounter = timeBetweenShots[1];
|
||||
AudioManager.instance.Play("Shoot");
|
||||
ObjectPooler.Instance.SpawnFromPool("BigBullet", firePoint[1].position, firePoint[1].rotation);
|
||||
player.speed = player.shootingSpeed;
|
||||
}
|
||||
}else if(shooting && player.gunSelected == 2){
|
||||
shotCounter -= Time.deltaTime;
|
||||
if (shotCounter <= 0){
|
||||
shotCounter = timeBetweenShots[2];
|
||||
AudioManager.instance.Play("Shoot");
|
||||
ObjectPooler.Instance.SpawnFromPool("Bullet", firePoint[2].position, firePoint[2].rotation);
|
||||
ObjectPooler.Instance.SpawnFromPool("Bullet", secondaryFirePoint.position, secondaryFirePoint.rotation);
|
||||
player.speed = player.shootingSpeed;
|
||||
}
|
||||
}else{
|
||||
shotCounter = 0;
|
||||
player.speed = player.defaultSpeed;
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Player/Shoot.cs.meta
Normal file
11
Assets/Scripts/Player/Shoot.cs.meta
Normal file
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0e38d1409562d6040af52ee5a90be837
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Add table
Add a link
Reference in a new issue