Made player mods affect the player
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
@@ -14,9 +15,15 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
private Vector3 m_SuicidePoint;
|
||||
private bool m_KillingItself;
|
||||
private float m_DeathLerp;
|
||||
|
||||
private bool m_HasFreeHitActive;
|
||||
private bool m_HasInvicibility;
|
||||
|
||||
public MeshRenderer m_Renderer;
|
||||
public Text m_ScoreText;
|
||||
[Header("References")]
|
||||
[SerializeField] private MeshRenderer m_Renderer;
|
||||
[SerializeField] private Text m_ScoreText;
|
||||
[SerializeField] private Material m_DefaultMaterial;
|
||||
[SerializeField] private Material m_FreeHitMaterial;
|
||||
|
||||
protected override void OnStart()
|
||||
{
|
||||
@@ -37,6 +44,11 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
m_ScoreText.color = Color.yellow;
|
||||
else
|
||||
m_ScoreText.color = Color.white;
|
||||
|
||||
if (m_HasFreeHitActive)
|
||||
m_Renderer.material = m_FreeHitMaterial;
|
||||
else
|
||||
m_Renderer.material = m_DefaultMaterial;
|
||||
|
||||
if (GlobalInput.IsScreenClicked && GlobalOrbitalPositionManager.AllowPlayerInput)
|
||||
{
|
||||
@@ -50,6 +62,43 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
m_DeathLerp += Time.deltaTime;
|
||||
}
|
||||
|
||||
private IEnumerator OnGrowPlayerModifier()
|
||||
{
|
||||
transform.localScale *= 1.5f;
|
||||
m_OrbitalPosition.m_ObjectRadius *= 1.5f;
|
||||
|
||||
yield return new WaitForSecondsRealtime(5f);
|
||||
|
||||
transform.localScale /= 1.5f;
|
||||
m_OrbitalPosition.m_ObjectRadius /= 1.5f;
|
||||
}
|
||||
|
||||
private IEnumerator OnShrinkPlayerModifier()
|
||||
{
|
||||
transform.localScale *= 0.6f;
|
||||
m_OrbitalPosition.m_ObjectRadius *= 0.6f;
|
||||
|
||||
yield return new WaitForSecondsRealtime(5f);
|
||||
|
||||
transform.localScale /= 0.6f;
|
||||
m_OrbitalPosition.m_ObjectRadius /= 0.6f;
|
||||
}
|
||||
|
||||
private IEnumerator OnSpeedUpModifier()
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
||||
private IEnumerator TriggerInvicibility()
|
||||
{
|
||||
m_HasFreeHitActive = false;
|
||||
m_HasInvicibility = true;
|
||||
|
||||
yield return new WaitForSecondsRealtime(1f);
|
||||
|
||||
m_HasInvicibility = false;
|
||||
}
|
||||
|
||||
public override void OnCollision(OrbitalPositionBehaviour other)
|
||||
{
|
||||
if (!m_OrbitalPosition.m_IsAttachedToRings)
|
||||
@@ -57,6 +106,17 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
|
||||
if (other.CompareTag("Enemy"))
|
||||
{
|
||||
if (m_HasInvicibility)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_HasFreeHitActive)
|
||||
{
|
||||
StartCoroutine(TriggerInvicibility());
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalOrbitalPositionManager.RestartSimulation();
|
||||
m_SuicidePoint = transform.position;
|
||||
m_KillingItself = true;
|
||||
@@ -65,7 +125,38 @@ public class PlayerController : OrbitalPositionBehaviour
|
||||
|
||||
else if (other.CompareTag("PlayerMod"))
|
||||
{
|
||||
other.OnCollision(this);
|
||||
Debug.Log($"Collision with player mod [{((PlayerModifier)other).HeldModifier}]");
|
||||
switch (((PlayerModifier)other).HeldModifier)
|
||||
{
|
||||
case PlayerModifier.Modifier.GainPoints:
|
||||
s_PlayerScore += 100;
|
||||
break;
|
||||
|
||||
case PlayerModifier.Modifier.FreeHit:
|
||||
m_HasFreeHitActive = true;
|
||||
break;
|
||||
|
||||
case PlayerModifier.Modifier.GrowPlayer:
|
||||
StartCoroutine(OnGrowPlayerModifier());
|
||||
break;
|
||||
|
||||
case PlayerModifier.Modifier.ShrinkPlayer:
|
||||
StartCoroutine(OnShrinkPlayerModifier());
|
||||
break;
|
||||
|
||||
case PlayerModifier.Modifier.SpeedUp:
|
||||
StartCoroutine(GlobalOrbitalPositionManager.Instance.StartPlayerSpeedupModifier());
|
||||
break;
|
||||
|
||||
case PlayerModifier.Modifier.ClearAllEnemies:
|
||||
EnemyController.KillAllEnemies();
|
||||
break;
|
||||
|
||||
default:
|
||||
Debug.Log($"Collision with unknown modifier occured [{((PlayerModifier)other).HeldModifier}]");
|
||||
break;
|
||||
}
|
||||
|
||||
Debug.Log("Collided with player mod");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user