Added Enemy Variants for Wall and Ground Enemies

Added Todo to CollisionChecker
This commit is contained in:
2022-02-21 19:30:46 +03:00
parent 8c5bd12294
commit d4ebf87eb7
11 changed files with 251 additions and 17 deletions

View File

@@ -24,7 +24,7 @@ namespace AI
protected virtual void Awake()
{
movement = gameObject.AddComponent<EnemyMovement>();
movement = gameObject.GetComponent<EnemyMovement>();
leftWallChecker = GetCollisionCheckerOnChild("Collision Checkers/Left Wall");
rightWallChecker = GetCollisionCheckerOnChild("Collision Checkers/Right Wall");
leftGroundChecker = GetCollisionCheckerOnChild("Collision Checkers/Left Ground");

View File

@@ -4,9 +4,9 @@ namespace Movement
{
public class CollisionChecker : MonoBehaviour
{
private Collider2D[] nonAllocColliderArray = new Collider2D[5];
private Collider2D[] nonAllocColliderArray = new Collider2D[5]; // TODO increase the size if it causes problems
public LayerMask LayerMask { get; set; } = ~((1 << 6) | (1 << 7)); // Everything except the "Player" and "Enemy" layer
public LayerMask LayerMask = ~((1 << 6) | (1 << 7)); // Everything except the "Player" and "Enemy" layer
public bool IsCollided => Physics2D.OverlapBoxNonAlloc(transform.position, transform.localScale, 0, nonAllocColliderArray, LayerMask) != 0;
public void OnDrawGizmosSelected()

View File

@@ -5,17 +5,17 @@ namespace Movement
[RequireComponent(typeof(Rigidbody2D))]
public class EnemyMovement : MonoBehaviour, IMovement
{
private Rigidbody2D _rigidbody2D = null;
private bool _isPaused = false;
private float moveValue = 0f;
protected Rigidbody2D _rigidbody2D = null;
protected bool _isPaused = false;
protected float moveValue = 0f;
public float BaseSpeed { get; set; } = 1f;
public bool IsPaused => _isPaused;
private void Awake()
protected virtual void Awake()
=> _rigidbody2D = GetComponent<Rigidbody2D>();
private void FixedUpdate()
protected virtual void FixedUpdate()
{
if (IsPaused)
return;
@@ -40,7 +40,7 @@ namespace Movement
UpdateRigidbody();
}
private void UpdateRigidbody()
protected void UpdateRigidbody()
=> _rigidbody2D.simulated = !_isPaused;
}
}

View File

@@ -0,0 +1,29 @@
using UnityEngine;
namespace Movement
{
public class EnemyVerticalMovement : EnemyMovement
{
protected Vector2 gravityForce = Vector2.right;
protected override void Awake()
{
base.Awake();
_rigidbody2D.gravityScale = 0f;
gravityForce *= -Physics2D.gravity.y * _rigidbody2D.mass;
}
protected override void FixedUpdate()
{
_rigidbody2D.AddRelativeForce(gravityForce);
if (IsPaused)
return;
Vector2 velocity = _rigidbody2D.velocity;
velocity.y = moveValue;
_rigidbody2D.velocity = velocity;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: adfb41bcf8c09e94ea1e95e22a4c7533
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: