70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
public class DamageObjectsManager : MonoBehaviour
|
|
{
|
|
public enum ObjectType { Object, HideSpikes, ShowSpikes };
|
|
public ObjectType objectType = ObjectType.Object;
|
|
private Animation animation;
|
|
private bool animate = false;
|
|
|
|
public bool instaKill = false;
|
|
public float damage = 10f;
|
|
public float damageRate = 5f;
|
|
private float actualDamageRate = 0f;
|
|
|
|
void Start()
|
|
{
|
|
animation = gameObject.GetComponent<Animation>();
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
}
|
|
|
|
public void damagePlayer(PlayerManager playerManager)
|
|
{
|
|
if (actualDamageRate < Time.time)
|
|
{
|
|
actualDamageRate = Time.time + damageRate;
|
|
playerManager.damage(damage, instaKill);
|
|
}
|
|
}
|
|
|
|
private void OnTriggerStay(Collider other)
|
|
{
|
|
if (objectType == ObjectType.HideSpikes)
|
|
{
|
|
if (other.gameObject.tag == "Player" && !animate)
|
|
{
|
|
Debug.Log(other.tag);
|
|
animation["Spikes"].speed = 1f;
|
|
animation["Spikes"].normalizedTime = 0f;
|
|
animation.Play("Spikes");
|
|
animate = true;
|
|
}
|
|
}
|
|
|
|
if (objectType == ObjectType.ShowSpikes)
|
|
{
|
|
if (other.gameObject.tag == "Player")
|
|
{
|
|
if (actualDamageRate < Time.time)
|
|
{
|
|
actualDamageRate = Time.time + damageRate;
|
|
other.gameObject.GetComponent<PlayerManager>().damage(damage, instaKill);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void SpikesBack()
|
|
{
|
|
animate = false;
|
|
animation["Spikes"].speed = -1f;
|
|
animation.Play("Spikes");
|
|
}
|
|
}
|