Added EnemyDamagedState

Something broke -- added gaurd
This commit is contained in:
Nico 2025-06-29 17:24:18 -07:00
parent 51a8f54192
commit 4be7c0df38
12 changed files with 5588 additions and 132 deletions

View File

@ -1,5 +1,92 @@
%YAML 1.1 %YAML 1.1
%TAG !u! tag:unity3d.com,2011: %TAG !u! tag:unity3d.com,2011:
--- !u!1 &4203408371334536830
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1693662441197515017}
- component: {fileID: 5093925305183066901}
m_Layer: 0
m_Name: Shadow
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1693662441197515017
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4203408371334536830}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -0.715, z: 0}
m_LocalScale: {x: 0.90277, y: 0.4705689, z: 0.90277}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 243343966221896818}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &5093925305183066901
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4203408371334536830}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 651355007
m_SortingLayer: 4
m_SortingOrder: -1
m_Sprite: {fileID: -2413806693520163455, guid: a86470a33a6bf42c4b3595704624658b, type: 3}
m_Color: {r: 0, g: 0, b: 0, a: 0.5176471}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &5621972084801698921 --- !u!1 &5621972084801698921
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -10,8 +97,6 @@ GameObject:
m_Component: m_Component:
- component: {fileID: 2045680922754072471} - component: {fileID: 2045680922754072471}
- component: {fileID: 1180914023357243997} - component: {fileID: 1180914023357243997}
- component: {fileID: 2963831140919592460}
- component: {fileID: 3688493226208381882}
m_Layer: 0 m_Layer: 0
m_Name: Capsule m_Name: Capsule
m_TagString: Untagged m_TagString: Untagged
@ -28,8 +113,8 @@ Transform:
m_GameObject: {fileID: 5621972084801698921} m_GameObject: {fileID: 5621972084801698921}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: -0.1984, z: 0}
m_LocalScale: {x: 0.75, y: 0.75, z: 1} m_LocalScale: {x: 0.62654996, y: 0.55155003, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
m_Children: [] m_Children: []
m_Father: {fileID: 243343966221896818} m_Father: {fileID: 243343966221896818}
@ -89,13 +174,66 @@ SpriteRenderer:
m_WasSpriteAssigned: 1 m_WasSpriteAssigned: 1
m_MaskInteraction: 0 m_MaskInteraction: 0
m_SpriteSortPoint: 0 m_SpriteSortPoint: 0
--- !u!70 &2963831140919592460 --- !u!1 &6411951171763069002
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 243343966221896818}
- component: {fileID: 4923938647755769837}
- component: {fileID: 3140493390153182690}
- component: {fileID: 9193586887117248369}
m_Layer: 0
m_Name: Gobler
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &243343966221896818
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6411951171763069002}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2045680922754072471}
- {fileID: 1693662441197515017}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4923938647755769837
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6411951171763069002}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5c89455bac58d943a2e1e110d37a24d, type: 3}
m_Name:
m_EditorClassIdentifier:
WalkState: {fileID: 11400000, guid: 5cd5bb6e94e95cf4c961f0433390f59f, type: 2}
ChaseState: {fileID: 11400000, guid: 71a5afe255167e14cad7bb413bdef532, type: 2}
AttackState: {fileID: 11400000, guid: 0b9cc3e63ee0125479639c05b89977f8, type: 2}
ChaseDistance: 7
AttackDistance: 1
--- !u!70 &3140493390153182690
CapsuleCollider2D: CapsuleCollider2D:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5621972084801698921} m_GameObject: {fileID: 6411951171763069002}
m_Enabled: 1 m_Enabled: 1
serializedVersion: 3 serializedVersion: 3
m_Density: 1 m_Density: 1
@ -123,24 +261,24 @@ CapsuleCollider2D:
m_UsedByEffector: 0 m_UsedByEffector: 0
m_CompositeOperation: 0 m_CompositeOperation: 0
m_CompositeOrder: 0 m_CompositeOrder: 0
m_Offset: {x: 0.0000014055772, y: -0.87583154} m_Offset: {x: -0.00000006812225, y: -0.5714509}
m_Size: {x: 0.7845726, y: 0.36333472} m_Size: {x: 0.8074399, y: 0.49523765}
m_Direction: 1 m_Direction: 1
--- !u!50 &3688493226208381882 --- !u!50 &9193586887117248369
Rigidbody2D: Rigidbody2D:
serializedVersion: 5 serializedVersion: 5
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5621972084801698921} m_GameObject: {fileID: 6411951171763069002}
m_BodyType: 0 m_BodyType: 0
m_Simulated: 1 m_Simulated: 1
m_UseFullKinematicContacts: 0 m_UseFullKinematicContacts: 0
m_UseAutoMass: 0 m_UseAutoMass: 0
m_Mass: 1 m_Mass: 1
m_LinearDamping: 0 m_LinearDamping: 5
m_AngularDamping: 0.05 m_AngularDamping: 1
m_GravityScale: 0 m_GravityScale: 0
m_Material: {fileID: 0} m_Material: {fileID: 0}
m_IncludeLayers: m_IncludeLayers:
@ -148,58 +286,8 @@ Rigidbody2D:
m_Bits: 0 m_Bits: 0
m_ExcludeLayers: m_ExcludeLayers:
serializedVersion: 2 serializedVersion: 2
m_Bits: 4294967295 m_Bits: 0
m_Interpolate: 1 m_Interpolate: 0
m_SleepingMode: 1 m_SleepingMode: 1
m_CollisionDetection: 0 m_CollisionDetection: 1
m_Constraints: 0 m_Constraints: 4
--- !u!1 &6411951171763069002
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 243343966221896818}
- component: {fileID: 4923938647755769837}
m_Layer: 0
m_Name: Gobler
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &243343966221896818
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6411951171763069002}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2045680922754072471}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4923938647755769837
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6411951171763069002}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a5c89455bac58d943a2e1e110d37a24d, type: 3}
m_Name:
m_EditorClassIdentifier:
WalkState: {fileID: 11400000, guid: 5cd5bb6e94e95cf4c961f0433390f59f, type: 2}
ChaseState: {fileID: 11400000, guid: 71a5afe255167e14cad7bb413bdef532, type: 2}
AttackState: {fileID: 11400000, guid: 0b9cc3e63ee0125479639c05b89977f8, type: 2}
ChaseDistance: 10
AttackDistance: 1

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
using System;
using Unity.IO.LowLevel.Unsafe; using Unity.IO.LowLevel.Unsafe;
using UnityEngine; using UnityEngine;
@ -25,6 +26,11 @@ namespace AI.Base {
Owner = ownerTransform; Owner = ownerTransform;
} }
virtual public StateNode InitializeCopy(Transform ownerTransform) {
Owner = ownerTransform;
return ScriptableObject.CreateInstance(this.GetType()) as StateNode;
}
virtual public void Start() {} virtual public void Start() {}
virtual public void Stop() {} virtual public void Stop() {}
virtual public void Tick() {} virtual public void Tick() {}

View File

@ -8,6 +8,13 @@ using UnityEngine;
private Transform Player; private Transform Player;
override public StateNode InitializeCopy(Transform ownerTransform) {
var copy = ScriptableObject.CreateInstance(this.GetType()) as EnemyChaseState;
copy.Owner = ownerTransform;
copy.Speed = Speed;
return copy;
}
override public void Start() { override public void Start() {
Player = GameObject.FindGameObjectWithTag("Player").transform; Player = GameObject.FindGameObjectWithTag("Player").transform;
Debug.Log("Entering Chase"); Debug.Log("Entering Chase");

View File

@ -0,0 +1,10 @@
using AI.Base;
using System;
using UnityEngine;
[CreateAssetMenu(menuName = "AI/Enemy/EnemyDamagedState")]
public class EnemyDamagedState : StateNode {
override public void Start() { Debug.Log("Entering Idle"); }
override public void Tick() { }
override public void Stop() { Debug.Log("Exiting Idle"); }
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7457688d54e7e8342b034cc3b7fd589e

View File

@ -1,4 +1,5 @@
using AI.Base; using AI.Base;
using UnityEditor.Experimental.GraphView;
using UnityEngine; using UnityEngine;
using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray; using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
@ -7,6 +8,7 @@ using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
[SerializeField] public StateNode WalkState; [SerializeField] public StateNode WalkState;
[SerializeField] public StateNode ChaseState; [SerializeField] public StateNode ChaseState;
[SerializeField] public StateNode AttackState; [SerializeField] public StateNode AttackState;
[SerializeField] public StateNode DamagedState;
[Header("Attributes")] [Header("Attributes")]
[SerializeField] private float ChaseDistance = 10f; [SerializeField] private float ChaseDistance = 10f;
@ -14,15 +16,27 @@ using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
private Transform Player; private Transform Player;
protected void Start() { protected void Start() {
Player = GameObject.FindGameObjectWithTag("Player")?.transform; Player = GameObject.FindGameObjectWithTag("Player")?.transform;
WalkState.Initialize(this.transform); WalkState = ScriptableObject.CreateInstance(WalkState.GetType()) as StateNode;
ChaseState.Initialize(this.transform);
WalkState = WalkState.InitializeCopy(this.transform);
ChaseState = ChaseState.InitializeCopy(this.transform);
//DamagedState = DamagedState.InitializeCopy(this.transform);
AttackState = AttackState.InitializeCopy(this.transform);
AttackState.Initialize(this.transform); AttackState.Initialize(this.transform);
CurrentState = WalkState; CurrentState = WalkState;
CurrentState.Start(); CurrentState.Start();
} }
protected void InitializeStateNode(StateNode node){
node = ScriptableObject.CreateInstance(node.GetType()) as StateNode;
node.Initialize(this.transform);
}
override protected IState GetNextState() { override protected IState GetNextState() {
if (Player == null) if (Player == null)
return CurrentState; return CurrentState;
@ -36,11 +50,16 @@ using static TMPro.SpriteAssetUtilities.TexturePacker_JsonArray;
return WalkState.GetNextState(); return WalkState.GetNextState();
} }
private void OnDrawGizmos() { private void OnDrawGizmos() {
DrawChaseDistance(); DrawChaseDistance();
DrawAttackDistance(); DrawAttackDistance();
} }
private void DrawChaseDistance() { private void DrawChaseDistance() {
Gizmos.color = CurrentState == (IState)ChaseState ? Color.yellow : Color.green; Gizmos.color = CurrentState == (IState)ChaseState ? Color.yellow : Color.green;
Vector2 center = this.transform.position; Vector2 center = this.transform.position;

View File

@ -55,7 +55,7 @@ public class BuilderManager : MonoBehaviour {
public void SetBuildMode(bool on) { public void SetBuildMode(bool on) {
BuildMode = on; BuildMode = on;
PreviewObj.SetActive(on); PreviewObj?.SetActive(on);
} }
void PlaceObject() { void PlaceObject() {

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
public class SpawnManager : MonoBehaviour {
public static bool IsPaused { get; private set; }
[SerializeField] private GameObject pauseMenuUI;
void Update() {
if (Input.GetKeyDown(KeyCode.Escape))
TogglePause();
}
public void TogglePause() {
IsPaused = !IsPaused;
Time.timeScale = IsPaused ? 0f : 1f;
AudioListener.pause = IsPaused;
pauseMenuUI.SetActive(IsPaused);
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 297bf7fd6271a174194f3ff9950eb487