Upgrade System
This commit is contained in:
@@ -2,24 +2,30 @@ using UnityEngine;
|
||||
|
||||
public class Arrow : MonoBehaviour
|
||||
{
|
||||
public int Damages = 15;
|
||||
|
||||
public GameObject target;
|
||||
|
||||
private PlayerManager _manager;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_manager = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerManager>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
transform.position = Vector3.MoveTowards(transform.position, target.transform.position, 20f * Time.deltaTime);
|
||||
if (target == null)
|
||||
{
|
||||
Destroy(gameObject);
|
||||
return;
|
||||
}
|
||||
transform.position = Vector3.MoveTowards(transform.position, target.transform.position, 20f * Time.deltaTime);
|
||||
}
|
||||
|
||||
private void OnTriggerEnter2D(Collider2D collision)
|
||||
{
|
||||
if (collision.CompareTag("Ennemy"))
|
||||
{
|
||||
collision.gameObject.GetComponent<Ennemy>().Life -= Damages;
|
||||
collision.gameObject.GetComponent<Ennemy>().Life -= _manager.ArrowDamages;
|
||||
collision.gameObject.GetComponent<Ennemy>().AnimateHit();
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ BoxCollider2D:
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_Bits: 63
|
||||
m_LayerOverridePriority: 0
|
||||
m_ForceSendLayers:
|
||||
serializedVersion: 2
|
||||
|
||||
+50
-13
@@ -3,23 +3,27 @@ using UnityEngine;
|
||||
|
||||
public class Halo : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private int radius = 1;
|
||||
[SerializeField]
|
||||
private int initialSwordsCount = 5;
|
||||
[SerializeField]
|
||||
private GameObject _sword;
|
||||
|
||||
private PlayerManager _manager;
|
||||
private List<GameObject> swords = new();
|
||||
|
||||
private float _oldRadius;
|
||||
private int _oldSwordsCount;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
float angle = Mathf.PI*2f / initialSwordsCount;
|
||||
for(int i = 0; i < initialSwordsCount; i++)
|
||||
_manager = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerManager>();
|
||||
_oldRadius = _manager.SwordsHaloRadius;
|
||||
_oldSwordsCount = (int)_manager.SwordsQuantity;
|
||||
|
||||
float angle = Mathf.PI*2f / _manager.SwordsQuantity;
|
||||
for(int i = 0; i < _manager.SwordsQuantity; i++)
|
||||
{
|
||||
GameObject sword = Instantiate(
|
||||
_sword,
|
||||
transform.position + new Vector3(Mathf.Cos(i * angle), Mathf.Sin(i * angle), 0),
|
||||
transform.position + new Vector3(Mathf.Cos(i * angle) * _manager.SwordsHaloRadius, Mathf.Sin(i * angle) * _manager.SwordsHaloRadius, 0),
|
||||
Quaternion.identity,
|
||||
transform
|
||||
);
|
||||
@@ -29,28 +33,61 @@ public class Halo : MonoBehaviour
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_oldRadius != _manager.SwordsHaloRadius)
|
||||
{
|
||||
_oldRadius = _manager.SwordsHaloRadius;
|
||||
ResizeHalo();
|
||||
}
|
||||
|
||||
if (_oldSwordsCount != _manager.SwordsQuantity)
|
||||
{
|
||||
AddSword();
|
||||
_oldSwordsCount = (int)_manager.SwordsQuantity;
|
||||
}
|
||||
|
||||
transform.Rotate(Vector3.forward, 200f * Time.deltaTime, Space.Self);
|
||||
}
|
||||
|
||||
private void OnDrawGizmos()
|
||||
{
|
||||
Gizmos.DrawWireSphere(transform.position, radius);
|
||||
Gizmos.DrawWireSphere(transform.position, _manager ? _manager.SwordsHaloRadius : 1f);
|
||||
}
|
||||
|
||||
public void AddSword()
|
||||
private void AddSword()
|
||||
{
|
||||
for(int i = 0; i < swords.Count; i++)
|
||||
for (int i = 0; i < _oldSwordsCount; i++)
|
||||
{
|
||||
Destroy(swords[i]);
|
||||
}
|
||||
swords.Clear();
|
||||
|
||||
float angle = Mathf.PI * 2f / initialSwordsCount;
|
||||
for (int i = 0; i < initialSwordsCount; i++)
|
||||
float angle = Mathf.PI * 2f / _manager.SwordsQuantity;
|
||||
for (int i = 0; i < _manager.SwordsQuantity; i++)
|
||||
{
|
||||
GameObject sword = Instantiate(
|
||||
_sword,
|
||||
transform.position + new Vector3(Mathf.Cos(i * angle), Mathf.Sin(i * angle), 0),
|
||||
transform.position + new Vector3(Mathf.Cos(i * angle) * _manager.SwordsHaloRadius, Mathf.Sin(i * angle) * _manager.SwordsHaloRadius, 0),
|
||||
Quaternion.identity,
|
||||
transform
|
||||
);
|
||||
swords.Add(sword);
|
||||
}
|
||||
}
|
||||
|
||||
private void ResizeHalo()
|
||||
{
|
||||
for (int i = 0; i < _manager.SwordsQuantity; i++)
|
||||
{
|
||||
DestroyImmediate(swords[i]);
|
||||
}
|
||||
swords.Clear();
|
||||
|
||||
float angle = Mathf.PI * 2f / _manager.SwordsQuantity;
|
||||
for (int i = 0; i < _manager.SwordsQuantity; i++)
|
||||
{
|
||||
GameObject sword = Instantiate(
|
||||
_sword,
|
||||
transform.position + new Vector3(Mathf.Cos(i * angle) * _manager.SwordsHaloRadius, Mathf.Sin(i * angle) * _manager.SwordsHaloRadius, 0),
|
||||
Quaternion.identity,
|
||||
transform
|
||||
);
|
||||
|
||||
@@ -45,5 +45,5 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
radius: 1
|
||||
initialSwordsCount: 10
|
||||
initialSwordsCount: 5
|
||||
_sword: {fileID: 4974588604955100116, guid: d21b2e937bf67eb4c8fc3db75696d4ce, type: 3}
|
||||
|
||||
@@ -3,8 +3,6 @@ using UnityEngine;
|
||||
[RequireComponent (typeof(BoxCollider2D))]
|
||||
public class Sword : MonoBehaviour
|
||||
{
|
||||
public int Damages = 25;
|
||||
|
||||
private PlayerManager _manager;
|
||||
|
||||
private void Start()
|
||||
@@ -14,7 +12,6 @@ public class Sword : MonoBehaviour
|
||||
|
||||
private void Update()
|
||||
{
|
||||
Damages = _manager.SwordsDamages;
|
||||
RotateSword();
|
||||
}
|
||||
|
||||
@@ -35,7 +32,7 @@ public class Sword : MonoBehaviour
|
||||
{
|
||||
if (collision.CompareTag("Ennemy") && collision.gameObject != null)
|
||||
{
|
||||
collision.GetComponent<Ennemy>().Life -= Damages;
|
||||
collision.GetComponent<Ennemy>().Life -= _manager.SwordsDamages;
|
||||
collision.gameObject.GetComponent<Ennemy>().AnimateHit();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: eb7d27bb22bd0cb4aaa180bffb894086, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Damages: 25
|
||||
--- !u!61 &5490123958980842494
|
||||
BoxCollider2D:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -145,7 +146,7 @@ BoxCollider2D:
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_Bits: 63
|
||||
m_LayerOverridePriority: 0
|
||||
m_ForceSendLayers:
|
||||
serializedVersion: 2
|
||||
|
||||
@@ -5,13 +5,31 @@ using UnityEngine;
|
||||
[RequireComponent (typeof(BoxCollider2D))]
|
||||
public class LaserBeam : MonoBehaviour
|
||||
{
|
||||
public int Damages = 50;
|
||||
|
||||
public float lifeSeconds = .2f;
|
||||
private PlayerManager _manager;
|
||||
private PlayerMovements _movements;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
StartCoroutine(nameof(EndLifeAfterXSeconds));
|
||||
_manager = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerManager>();
|
||||
_movements = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerMovements>();
|
||||
if (_manager.BeamFrequency > 0)
|
||||
{
|
||||
StartCoroutine(nameof(EndLifeAfterXSeconds));
|
||||
}
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (_manager.laserOnX == 0)
|
||||
{
|
||||
if (!_movements.lookOnRight)
|
||||
{
|
||||
transform.rotation = Quaternion.Euler(0f, 180f, 0f);
|
||||
} else
|
||||
{
|
||||
transform.rotation = Quaternion.Euler(0f, 0f, 0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerEnter2D(Collider2D collision)
|
||||
@@ -26,13 +44,13 @@ public class LaserBeam : MonoBehaviour
|
||||
{
|
||||
if (collision.CompareTag("Ennemy"))
|
||||
{
|
||||
collision.gameObject.GetComponent<Ennemy>().Life -= (int)(Damages * Time.deltaTime);
|
||||
collision.gameObject.GetComponent<Ennemy>().Life -= (int)(_manager.BeamDamages * Time.deltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator EndLifeAfterXSeconds()
|
||||
{
|
||||
yield return new WaitForSeconds(lifeSeconds);
|
||||
yield return new WaitForSeconds(_manager.BeamLife);
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ SpriteRenderer:
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: -1
|
||||
m_SortingOrder: 0
|
||||
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_FlipX: 0
|
||||
@@ -97,7 +97,7 @@ GameObject:
|
||||
- component: {fileID: 1475843655422961594}
|
||||
m_Layer: 0
|
||||
m_Name: Laser Beam
|
||||
m_TagString: Untagged
|
||||
m_TagString: Beam
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
@@ -133,7 +133,7 @@ BoxCollider2D:
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_Bits: 63
|
||||
m_LayerOverridePriority: 0
|
||||
m_ForceSendLayers:
|
||||
serializedVersion: 2
|
||||
@@ -175,4 +175,3 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 85af5326636cca14082a8bc4f4dfedcc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Damages: 50
|
||||
|
||||
Reference in New Issue
Block a user