ofb/Assets/Scripts/EnemyPatrol.cs
Sam b6804e2986 removed commented out code and print statements
the console should finally be message free! except for the unity memory leak lol but that one's not on us
2023-05-06 19:05:46 -07:00

106 lines
3.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyPatrol : MonoBehaviour {
[Header("Tambourine")]
[HideInInspector] public bool pinned = false;
[HideInInspector] public TambourineBehavior pinnedTambourine;
[Header("Horizontal")]
public bool isHorizontal;
public float rangeHorizontal;
public float xLeft;
public float xRight;
public Vector2 movementVectorHorizontal = Vector2.right;
[Header("Vertical")]
public bool isVertical;
public float rangeVertical;
public float yUp;
public float yDown;
public Vector2 movementVectorVertical = Vector2.up;
[Header("General")]
public float moveSpeed;
Animator animator;
public bool isPlayingDefeatAnimation = false;
void Awake() {
animator = GetComponent<Animator>();
}
// Start is called before the first frame update
void Start() {
xLeft = transform.position.x - rangeHorizontal;
xRight = transform.position.x + rangeHorizontal;
yDown = transform.position.y - rangeVertical;
yUp = transform.position.y + rangeVertical;
movementVectorHorizontal *= moveSpeed;
movementVectorVertical *= moveSpeed;
}
// Update is called once per frame
void Update() {
if (!pinned) {
if (isHorizontal) {
if (transform.position.x > xRight || transform.position.x < xLeft) {
movementVectorHorizontal = -movementVectorHorizontal;
GetComponent<SpriteRenderer>().flipX = !GetComponent<SpriteRenderer>().flipX;
}
transform.position += new Vector3(movementVectorHorizontal.x, 0, 0) * Time.deltaTime;
}
if (isVertical) {
if (transform.position.y >= yUp || transform.position.y <= yDown) {
movementVectorVertical = -movementVectorVertical;
}
transform.position += new Vector3(0, movementVectorVertical.y, 0) * Time.deltaTime;
}
}
}
public void TogglePin(bool isPinned, TambourineBehavior tambourine) {
this.pinned = isPinned;
if (isPinned) {
animator.speed = 0;
this.pinnedTambourine = tambourine;
} else {
animator.speed = 1;
this.pinnedTambourine = null;
}
}
public void DefeatEnemy() {
StartCoroutine(Defeat());
}
IEnumerator Defeat() {
isPlayingDefeatAnimation = true;
if (pinned) {
pinnedTambourine.DestroySelf();
TogglePin(false, this.pinnedTambourine);
}
this.gameObject.GetComponent<BoxCollider2D>().enabled = false;
animator.Play("Explosion");
float explosionTime = .25f;
this.gameObject.GetComponent<AudioSource>().Play();
yield return new WaitForSeconds(explosionTime);
this.gameObject.GetComponent<BoxCollider2D>().enabled = true;
isPlayingDefeatAnimation = false;
this.gameObject.SetActive(false);
}
void OnDrawGizmos() {
Gizmos.color = Color.green;
if (isHorizontal){
Gizmos.DrawLine(new Vector3(transform.position.x - rangeHorizontal, transform.position.y, transform.position.z), new Vector3(transform.position.x + rangeHorizontal, transform.position.y, transform.position.z));
}
if (isVertical) {
Gizmos.DrawLine(new Vector3(transform.position.x, transform.position.y - rangeVertical, transform.position.z), new Vector3(transform.position.x, transform.position.y + rangeVertical, transform.position.z));
}
}
}