65 lines
1.8 KiB
C#
65 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Audio;
|
|
|
|
/// <summary>
|
|
/// Class to deal with the other collisions for the core
|
|
/// </summary>
|
|
public class MultiCollider : ColliderManager
|
|
{
|
|
public AudioClip corePickupSFX;
|
|
public GameObject radiusToken;
|
|
public GameObject PlayerOne;
|
|
public SphereCollider Cores;
|
|
private GameObject areaAround;
|
|
|
|
public int radiusTick;
|
|
|
|
// Bool checks if the core has been collected, this is because the ships are made of multiple collision boxes and would trigger more than once.
|
|
private bool _tokenCollected = false;
|
|
|
|
public override void ProcessCollision(CollisionDirection direction, Collision collision, bool wasChild)
|
|
{
|
|
GameObject collisionGO;
|
|
if (wasChild)
|
|
{
|
|
collisionGO = collision.transform.parent.gameObject;
|
|
}
|
|
else
|
|
{
|
|
collisionGO = collision.gameObject;
|
|
}
|
|
|
|
// Check the tag of the collided object, Direction doesnt matter i assume
|
|
switch (collisionGO.tag)
|
|
{
|
|
case "Player":
|
|
PickupToken();
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Process the core pick up and destroy the core object.
|
|
/// </summary>
|
|
public void PickupToken()
|
|
{
|
|
// If the core has been collected ignore it.
|
|
if (!_tokenCollected)
|
|
{
|
|
Debug.Log("Pick up radius");
|
|
_tokenCollected = true;
|
|
AudioSource.PlayClipAtPoint(corePickupSFX, transform.position);
|
|
Destroy(radiusToken);
|
|
while (radiusTick > 0)
|
|
{
|
|
Cores.radius = 10;
|
|
radiusTick -= 1;
|
|
}
|
|
Destroy(areaAround);
|
|
}
|
|
}
|
|
}
|