Added Enemy Variants for Wall and Ground Enemies
Added Todo to CollisionChecker
This commit is contained in:
@@ -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");
|
||||
|
@@ -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()
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
29
Assets/Scripts/Movement/EnemyVerticalMovement.cs
Normal file
29
Assets/Scripts/Movement/EnemyVerticalMovement.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/Movement/EnemyVerticalMovement.cs.meta
Normal file
11
Assets/Scripts/Movement/EnemyVerticalMovement.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: adfb41bcf8c09e94ea1e95e22a4c7533
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user