MOD: Zweite variante an Gegnern

This commit is contained in:
2024-09-05 21:10:50 +02:00
parent 1eeafca3f2
commit 5a92744ee1
47 changed files with 1344 additions and 0 deletions

View File

@@ -0,0 +1,11 @@
using UnityEngine;
public abstract class CEBaseState
{
public abstract void EnterState(CEStateManager CornerEnemy);
public abstract void UpdateState(CEStateManager CornerEnemy);
}

View File

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

View File

@@ -0,0 +1,58 @@
using Unity.VisualScripting;
using UnityEngine;
public class CEMoveState : CEBaseState
{
CEVariables cEVariables;
public Vector2 targetPosition;
public Vector2 currentTargetVector;
public int randomNumber;
public Vector2 currentVelocity;
public float timeUntilSwitch;
public override void EnterState(CEStateManager CornerEnemy) //passiert nur das erste mal wo er aufgerufen wird
{
cEVariables = CornerEnemy.GetComponent<CEVariables>();
currentTargetVector = new Vector2(Random.Range(0,2)*2-1, Random.Range(0,2)*2-1);
RandomNeighborVector();
timeUntilSwitch = cEVariables.moveDuration;
}
public override void UpdateState(CEStateManager CornerEnemy) //passiert jeden frame
{
CalculateTargetPosition();
timeUntilSwitch -= Time.smoothDeltaTime;
if(timeUntilSwitch >= 0)
{
MoveToPosition(CornerEnemy);
}
else
{
CornerEnemy.SwitchState(CornerEnemy.ShootState);
Debug.Log("switch to shoot");
}
}
void CalculateTargetPosition()
{
targetPosition = cEVariables.playerData.playerPosition + currentTargetVector * cEVariables.moveDistance;
}
void RandomNeighborVector()
{
if(Random.Range(0,2) == 0)
{
currentTargetVector.x = currentTargetVector.x - (currentTargetVector.x * 2);
}
else
{
currentTargetVector.y = currentTargetVector.y - (currentTargetVector.y * 2);
}
}
void MoveToPosition(CEStateManager CornerEnemy)
{
CornerEnemy.transform.position = Vector2.SmoothDamp(CornerEnemy.transform.position, targetPosition, ref currentVelocity, cEVariables.moveSpeed * Time.deltaTime);
}
}

View File

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

View File

@@ -0,0 +1,18 @@
using UnityEngine;
public class CEPatrolState : CEBaseState
{
CEVariables cEVariables;
public override void EnterState(CEStateManager CornerEnemy)
{
cEVariables = CornerEnemy.GetComponent<CEVariables>();
}
public override void UpdateState(CEStateManager CornerEnemy)
{
CornerEnemy.SwitchState(CornerEnemy.MoveState);
}
}

View File

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

View File

@@ -0,0 +1,41 @@
using Unity.Properties;
using UnityEditor.U2D.Aseprite;
using UnityEngine;
using UnityEngine.U2D;
public class CEShootState : CEBaseState
{
CEVariables cEVariables;
public float timer;
public float timesShoot;
public override void EnterState(CEStateManager CornerEnemy)
{
cEVariables = CornerEnemy.GetComponent<CEVariables>();
timer = 0;
timesShoot = 0;
}
public override void UpdateState(CEStateManager CornerEnemy)
{
timer += Time.deltaTime;
if(timer > cEVariables.timeBetweenShots)
{
timer = 0;
Shoot();
timesShoot++;
}
if(timesShoot > cEVariables.shootAmount)
{
CornerEnemy.SwitchState(CornerEnemy.MoveState);
}
}
public void Shoot()
{
cEVariables.CreateBullet();
}
}

View File

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

View File

@@ -0,0 +1,30 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CEStateManager : MonoBehaviour
{
CEBaseState currentState;
public CEPatrolState PatrolState = new CEPatrolState();
public CEMoveState MoveState = new CEMoveState();
public CEShootState ShootState = new CEShootState();
void Start()
{
currentState = PatrolState;
currentState.EnterState(this);
}
// Update is called once per frame
void Update()
{
currentState.UpdateState(this);
}
public void SwitchState(CEBaseState state)
{
currentState = state;
state.EnterState(this);
}
}

View File

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