176 lines
4.1 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|