Files
ConvenientHorror/Assets/Scripts/Enemy/HaiScript.cs

207 lines
4.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System.Collections;
using UnityEngine;
public class HaiScript : MonoBehaviour
{
[SerializeField] GameObject button;
[Header("Spawn Points")]
[SerializeField] GameObject SPBack;
[SerializeField] GameObject SPLeft;
[SerializeField] GameObject SPRight;
[SerializeField] GameObject SPDeath;
bool spawnLeft = false;
[Header("Character")]
[SerializeField] GameObject Hai;
//[SerializeField] int damageDealt = 1; //hat aktuell keinen Zweck
[SerializeField] public float stateTime = 10f;
public bool haiKill;
[Header("Scripts")]
[SerializeField] GameObject scriptPile;
[SerializeField] GameObject door1; //1 is always Left
[SerializeField] GameObject door2;
[SerializeField] GameObject levelScript;
[SerializeField] GameObject eFie;
[SerializeField] GameObject eSilv;
ChangeHealth healthScript;
Door doorSwitch;
Door doorSwitch2;
LevelBehavior level;
FieScript fie;
SilvScript silv;
private void Awake()
{
healthScript = scriptPile.GetComponent<ChangeHealth>();
doorSwitch = door1.GetComponent<Door>();
doorSwitch2 = door2.GetComponent<Door>();
level = levelScript.GetComponent<LevelBehavior>();
fie = eFie.GetComponent<FieScript>();
silv = eSilv.GetComponent<SilvScript>();
}
void Start()
{
button.SetActive(false); //zum vorherigen Debuggen genutzt
spawnLeft = false;
//StateOne();
StartStuff();
}
void Update()
{
}
public void HitPlayer()
{
healthScript.GetHit();
}
public void StartStuff()
{
Debug.Log("I´m starting stuff.");
StartCoroutine(WanderAround());
}
IEnumerator WanderAround()
{
float elapsed = 0;
Debug.Log("Hai: Wandering around");
button.SetActive(false);
Hai.transform.position = SPBack.transform.position;
//Hauptposition
Debug.Log("Hai: Bin hinten");
int random = Random.Range(1, 3);
if (random == 1) //1 bedeutet immer left
{
spawnLeft = true;
}
else
{
spawnLeft = false;
}
Debug.Log("random = " + random);
while (elapsed < stateTime)
{
elapsed += Time.deltaTime;
}
yield return new WaitForSeconds(stateTime);
StartCoroutine(WanderClose());
}
IEnumerator WanderClose()
{
float elapsed2 = 0;
if (spawnLeft == true) //1 bedeutet immer left
{
Hai.transform.position = SPLeft.transform.position;
}
else
{
Hai.transform.position = SPRight.transform.position;
}
//einen von zwei Punkten aussuchen
Debug.Log("Hai: Komme näher");
while (elapsed2 < stateTime)
{
elapsed2 += Time.deltaTime;
}
yield return new WaitForSeconds(stateTime);
StartCoroutine(GetTooClose());
}
IEnumerator GetTooClose()
{
float elapsed3 = 0;
float stickAround = 0f;
if (spawnLeft && doorSwitch.isOpen == true)
{
Hai.transform.position = SPDeath.transform.position;
Debug.Log("Hai: Hab dich!");
//reingehen
HitPlayer();
fie.fieKill = false;
silv.silvKill = false;
haiKill = true;
stickAround += Time.deltaTime;
if (stickAround >= 2f)
{
Hai.transform.position = SPBack.transform.position;
stickAround = 0f;
}
}
else if (!spawnLeft && doorSwitch2.isOpen == true)
{
Hai.transform.position = SPDeath.transform.position;
Debug.Log("Hai: Hab dich!");
//reingehen
HitPlayer();
fie.fieKill = false;
silv.silvKill = false;
haiKill = true;
stickAround += Time.deltaTime;
if (stickAround >= 2f)
{
Hai.transform.position = SPBack.transform.position;
stickAround = 0f;
}
}
else
{
//AudioSpielen
haiKill = false;
level.earnedGems += level.earnGems;
Debug.Log("Hai: Och menno");
Hai.transform.position = SPBack.transform.position;
}
spawnLeft = false;
//StateOne();
while (elapsed3 < stateTime)
{
elapsed3 += Time.deltaTime;
}
yield return new WaitForSeconds(stateTime);
StartCoroutine(WanderAround());
}
}