Files
JourneyProject/Assets/Scripts/SteampunkBoss.cs
Garrett Kaiser ef830fd4ac Boss Hurts PLayer
2026-01-15 14:54:58 -08:00

176 lines
4.1 KiB
C#

using UnityEngine;
public class SteampunkBoss : MonoBehaviour
{
public PlayerMovement playerMovement;
public GameObject Player;
public int randomNumber = 0;
public float stallTimer = 0;
public bool setTimer = false;
public Vector3 TargetPosition;
public bool setposition = false;
public GameObject JumpHitbox;
public GameObject LungeHitbox;
public float lungeBackup;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
if (stallTimer <= 0)
{
transform.LookAt(Player.transform);
randomNumber = Random.Range(1, 6);
setTimer = false;
}
if (randomNumber == 1)
{
JumpAttack();
}
else if (randomNumber == 2)
{
RocketAttack();
}
else if (randomNumber == 3)
{
LungeAttack();
}
else if (randomNumber == 4)
{
SlashAttack();
}
else if (randomNumber == 5)
{
Block();
}
}
void JumpAttack()
{
if (!setTimer)
{
stallTimer = 1;
setTimer = true;
}
if (!setposition)
{
TargetPosition = Player.transform.position;
setposition = true;
}
transform.position = Vector3.MoveTowards(transform.position, new Vector3(TargetPosition.x, 20, TargetPosition.z), 20 * Time.deltaTime);
if ((transform.position.x == TargetPosition.x) && (transform.position.z == TargetPosition.z))
{
transform.position = Vector3.MoveTowards(transform.position, TargetPosition, 80 * Time.deltaTime);
JumpHitbox.SetActive(true);
}
if (transform.position == TargetPosition)
{
JumpHitbox.SetActive(false);
stallTimer -= Time.deltaTime;
}
if (stallTimer <= 0)
{
setposition = false;
}
}
void RocketAttack()
{
if (!setTimer)
{
stallTimer = 3;
setTimer = true;
}
if (!setposition)
{
TargetPosition = Player.transform.position;
setposition = true;
}
if (stallTimer >= 2.6 && randomNumber == 2)
{
transform.position = Vector3.MoveTowards(transform.position, TargetPosition, -30 * Time.deltaTime);
}
stallTimer -= Time.deltaTime;
if (stallTimer <= 0)
{
setposition = false;
}
}
void LungeAttack()
{
if (!setTimer)
{
stallTimer = 0.5f;
setTimer = true;
}
if (!setposition)
{
TargetPosition = Player.transform.position;
setposition = true;
}
if (lungeBackup > 0)
{
transform.position = Vector3.MoveTowards(transform.position, TargetPosition, -10 * Time.deltaTime);
lungeBackup -= Time.deltaTime;
}
if (lungeBackup <= 0)
{
LungeHitbox.SetActive(true);
transform.position = Vector3.MoveTowards(transform.position, TargetPosition, 30 * Time.deltaTime);
}
if (transform.position == TargetPosition)
{
LungeHitbox.SetActive(false);
stallTimer -= Time.deltaTime;
}
if (stallTimer <= 0)
{
lungeBackup = 1;
setposition = false;
}
}
void SlashAttack()
{
if (!setTimer)
{
stallTimer = 1;
setTimer = true;
}
stallTimer -= Time.deltaTime;
}
void Block()
{
if (!setTimer)
{
stallTimer = 1;
setTimer = true;
}
stallTimer -= Time.deltaTime;
}
public void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("Hit Player");
playerMovement.HP -= 1;
}
else{
Debug.Log("Failed");
}
}
}