diff --git a/Assets/Navigation Data/Level3_NavData.shnav b/Assets/Navigation Data/Level3_NavData.shnav new file mode 100644 index 00000000..42d64e5b Binary files /dev/null and b/Assets/Navigation Data/Level3_NavData.shnav differ diff --git a/Assets/Navigation Data/Level3_NavData.shnav.shmeta b/Assets/Navigation Data/Level3_NavData.shnav.shmeta new file mode 100644 index 00000000..211b87b7 --- /dev/null +++ b/Assets/Navigation Data/Level3_NavData.shnav.shmeta @@ -0,0 +1,3 @@ +Name: Level3_NavData +ID: 263362242 +Type: 15 diff --git a/Assets/Scenes/Level2.shade b/Assets/Scenes/Level2.shade index e1934259..4e8e6879 100644 --- a/Assets/Scenes/Level2.shade +++ b/Assets/Scenes/Level2.shade @@ -5535,7 +5535,7 @@ - Is Trigger: false Collision Tag: 5 Type: Box - Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} + Half Extents: {x: 0.200000003, y: 1.79999995, z: 0.200000003} Friction: 0.400000006 Bounciness: 0 Density: 1 diff --git a/Assets/Scenes/Level3.shade b/Assets/Scenes/Level3.shade index d17b22a0..2e39c77a 100644 --- a/Assets/Scenes/Level3.shade +++ b/Assets/Scenes/Level3.shade @@ -1,4 +1,4 @@ -- NavData: 0 +- NavData: 263362242 - EID: 0 Name: Light_Direction IsActive: true @@ -4573,6 +4573,15 @@ Density: 1 Position Offset: {x: 0.284000009, y: 0.305999994, z: 0.555999994} Rotation Offset: {x: 0, y: 0, z: 0} + - Is Trigger: false + Collision Tag: 9 + Type: Box + Half Extents: {x: 1.70000005, y: 1, z: 1.79999995} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: -0.200000003, y: 0.200000003, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} IsActive: true Scripts: ~ - EID: 206 @@ -5696,7 +5705,7 @@ Collider Component: Colliders: - Is Trigger: false - Collision Tag: 7 + Collision Tag: 8 Type: Box Half Extents: {x: 15, y: 1, z: 15} Friction: 0.400000006 @@ -8930,60 +8939,6 @@ Clicked: false IsActive: true Scripts: ~ -- EID: 542 - Name: ====AI===== - IsActive: true - NumberOfChildren: 0 - Components: - Transform Component: - Translate: {x: 1.19757175, y: 0, z: 0.855755448} - Rotate: {x: -0, y: 0, z: -0} - Scale: {x: 1, y: 1, z: 1} - IsActive: true - Renderable Component: - Mesh: 148542784 - Material: 121518381 - IsActive: true - RigidBody Component: - Type: Dynamic - Drag: 0.00999999978 - Angular Drag: 0.100000001 - Gravity Scale: 1 - Use Gravity: true - Interpolate: false - Sleeping Enabled: true - Freeze Position X: false - Freeze Position Y: false - Freeze Position Z: false - Freeze Rotation X: true - Freeze Rotation Y: false - Freeze Rotation Z: true - IsActive: true - Collider Component: - Colliders: - - Is Trigger: false - Collision Tag: 5 - Type: Box - Half Extents: {x: 0.600000024, y: 1.79999995, z: 0.400000006} - Friction: 0.400000006 - Bounciness: 0 - Density: 1 - Position Offset: {x: 0, y: 0.899999976, z: 0} - Rotation Offset: {x: 0, y: 0, z: 0} - IsActive: true - Scripts: - - Type: Homeowner1 - Enabled: true - waypointsPool: 541 - startWaypoint: 540 - patrolSpeed: 0.75 - chaseSpeed: 2 - turningSpeed: 5 - sightDistance: 8 - eyeOffset: [0, 1.64999998, 0] - distanceToCapture: 0.800000012 - captureTime: 0.5 - footstepSFXIntervalMultiplier: 0.5 - EID: 541 Name: ====WaypointPool==== IsActive: true @@ -12335,7 +12290,7 @@ NumberOfChildren: 8 Components: Transform Component: - Translate: {x: 5.5, y: 0.171148509, z: 10} + Translate: {x: 5.5, y: 0.300000012, z: 10} Rotate: {x: -0, y: -3.1415925, z: 0} Scale: {x: 0.999999404, y: 1, z: 0.999999404} IsActive: true @@ -15497,4 +15452,126 @@ Color Tint: {x: 0.0187467411, y: 0.627120614, z: 0.709251106, w: 1} Acceleration: {x: 0, y: 0.100000001, z: 0} IsActive: true - Scripts: ~ \ No newline at end of file + Scripts: ~ +- EID: 66078 + Name: ====AI===== + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0.667429447, y: 0, z: 1.10868871} + Rotate: {x: -0, y: 0, z: -0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Renderable Component: + Mesh: 148542784 + Material: 121518381 + IsActive: true + RigidBody Component: + Type: Dynamic + Drag: 0.00999999978 + Angular Drag: 0.100000001 + Gravity Scale: 1 + Use Gravity: true + Interpolate: false + Sleeping Enabled: true + Freeze Position X: false + Freeze Position Y: false + Freeze Position Z: false + Freeze Rotation X: true + Freeze Rotation Y: false + Freeze Rotation Z: true + IsActive: true + Collider Component: + Colliders: + - Is Trigger: false + Collision Tag: 5 + Type: Box + Half Extents: {x: 0.200000003, y: 1.79999995, z: 0.200000003} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 0.899999976, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Navigation Component: + Target: {x: 0, y: 0, z: 0} + Forward: {x: 0, y: 0, z: 0} + Recalculate Path: true + Unreachable Target: false + Tolerance: 1 + Acceptance threshold: 0.100000001 + IsActive: true + Animator Component: + Rig: 76586906 + AnimationController: 0 + IsActive: true + Scripts: + - Type: SHADE_Scripting.Gameplay.AIBehaviour.AIRework.AILineOfSight + Enabled: true + player: 65775 + range: 5 + angle: 30 + angleBetween: 0 + distance: 0 + heightLimit: 1 + rayOffset: [0, 0, 0] + withinRange: false + withinSight: false + lastFoundPos: [0, 0, 0] + lastFoundTimer: 0 + - Type: SHADE_Scripting.Gameplay.AIBehaviour.AIRework.RotateToVelocity + Enabled: true + rotationPerSecond: 5 + active: true + rotateToPlayerLastKnown: false + lookAround: false + - Type: SHADE_Scripting.Gameplay.AIBehaviour.AIRework.HomeOwnerAI + Enabled: true + idleDuration: 1 + timeoutDuration: 2 + patrolPointParent: 541 + patrolSpeed: 1 + chaseSpeed: 3 + alertCooldown: 0 + player: 65775 + attackHitbox: 627 + walkingAnim: 229189609 + idleAnim: 224442713 + alertAnim: 227890696 + alertRunAnim: 230172366 + alertIdleAnim: 234046577 + timeoutAnim: 228323560 + atkWindupAnim: 223078653 + atkHoldAnim: 228250554 + atkSeqAnim: 226129627 + - Type: StateMachine + Enabled: true + currentStateName: "" + currentAnimName: "" +- EID: 627 + Name: AttackHitbox + IsActive: true + NumberOfChildren: 0 + Components: + Transform Component: + Translate: {x: 0, y: -0.10252738, z: -2.20271254} + Rotate: {x: 0, y: 0, z: 0} + Scale: {x: 1, y: 1, z: 1} + IsActive: true + Collider Component: + Colliders: + - Is Trigger: true + Collision Tag: 5 + Type: Box + Half Extents: {x: 0.800000012, y: 1.79999995, z: 1.5} + Friction: 0.400000006 + Bounciness: 0 + Density: 1 + Position Offset: {x: 0, y: 1, z: 0} + Rotation Offset: {x: 0, y: 0, z: 0} + IsActive: true + Scripts: + - Type: SHADE_Scripting.Gameplay.AIBehaviour.AIRework.HomeOwnerAttackHitbox + Enabled: true + aiGO: 66078 \ No newline at end of file diff --git a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAI.cs b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAI.cs index f97ef995..d522189c 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAI.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAI.cs @@ -127,14 +127,17 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework private void AICheat() { StateMachine machine = GetScript(); - if(machine) + AILineOfSight los = GetScript(); + if(machine && los) { - if (Input.GetKeyDown(Input.KeyCode.F)) + if (Input.GetKeyDown(Input.KeyCode.K)) { + los.range = 5.0f; machine.SetState(typeof(AlertState)); } if(Input.GetKeyDown(Input.KeyCode.L)) { + los.range = 0.0f; machine.SetState(typeof(IdleState)); } diff --git a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAttackHitbox.cs b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAttackHitbox.cs index 61328296..1c9ac802 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAttackHitbox.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/HomeOwnerAttackHitbox.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Threading; using System.Threading.Tasks; using static PlayerController; @@ -11,15 +12,25 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework public class HomeOwnerAttackHitbox : Script { public GameObject aiGO; + + Transform transform; + Transform aiTransform; + + + protected override void start() + { + transform = GetComponent(); + aiTransform = aiGO.GetComponent(); + } + protected override void update() { - Transform transform = GetComponent(); - Transform aiTransform = aiGO.GetComponent(); - - if (transform) + if (transform && aiTransform) { - transform.GlobalPosition = aiTransform.GlobalPosition; + + transform.GlobalPosition = aiTransform.GlobalPosition + aiTransform.Forward * 0.7f; transform.GlobalEulerAngles = aiTransform.GlobalEulerAngles; + } } @@ -33,11 +44,15 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework { pc.currentState = RaccoonStates.CAUGHT; if (pc.stateMachine && !pc.stateMachine.IsState(typeof(PlayerCaughtState))) - pc.stateMachine.SetState(typeof(PlayerCaughtState)); + pc.stateMachine.SetState(typeof(PlayerCaughtState)); pc.GotCaught(); if (ai) - ai.Reset(); + { + ai.Reset(); + GameObject.SetActive(false); + } + } } diff --git a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/States/AttackState.cs b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/States/AttackState.cs index 1460fdc8..cd25ef9d 100644 --- a/Assets/Scripts/Gameplay/AIBehaviour/AIRework/States/AttackState.cs +++ b/Assets/Scripts/Gameplay/AIBehaviour/AIRework/States/AttackState.cs @@ -14,12 +14,14 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States float windupTime = 8.0f / 30.0f; float holdTime = 0.3f; - float seqTime = 8.0f / 30.0f + 0.5f; + float seqTime = 8.0f / 30.0f ; + float endTime = 0.5f; bool windUp = false; bool hold = false; bool seq = false; + bool end = false; public AttackState(StateMachine machine): base(machine) { @@ -34,6 +36,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States windUp = true; hold = false; seq = false; + end = false; timer = windupTime; RotateToVelocity rotate = machine.GetScript(); @@ -45,8 +48,19 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States { rigid.LinearVelocity = Vector3.Zero; } + Transform transform = machine.GetComponent(); + AILineOfSight los = machine.GetScript(); + Transform playerTransform = ai.player.GetComponent(); + if (los && transform) + { + Vector3 direction = playerTransform.GlobalPosition - transform.GlobalPosition; + Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f); + transform.LocalRotation = targetRotation; + + } + ai.attackHitbox.SetActive(false); } @@ -61,18 +75,7 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States rotate.lookAround = false; } - Transform transform = machine.GetComponent(); - AILineOfSight los = machine.GetScript(); - Transform playerTransform = ai.player.GetComponent(); - - - if(los && transform) - { - Vector3 direction = playerTransform.GlobalPosition - transform.GlobalPosition; - Quaternion targetRotation = Quaternion.Euler(0.0f, MathF.Atan2(direction.x, direction.z), 0.0f); - transform.LocalRotation = targetRotation; - - } + ai.attackHitbox.SetActive(false); } @@ -103,12 +106,29 @@ namespace SHADE_Scripting.Gameplay.AIBehaviour.AIRework.States } else if(seq) { + + if(timer <= 1.0f / 30.0f) + { + ai.attackHitbox.SetActive(true); + } + if(timer <= 0.0f) { seq = false; + end = true; + + timer = endTime; + + } + } + else if(end) + { + if(timer <= 0.0f) + { + end = false; AILineOfSight los = ai.GetScript(); - if(los && los.withinSight) + if (los && los.withinSight) { machine.SetState(typeof(ChaseState)); } diff --git a/SHADE_Engine/src/Navigation/SHNavigationSystem.cpp b/SHADE_Engine/src/Navigation/SHNavigationSystem.cpp index bf0feda0..6d99d97c 100644 --- a/SHADE_Engine/src/Navigation/SHNavigationSystem.cpp +++ b/SHADE_Engine/src/Navigation/SHNavigationSystem.cpp @@ -240,8 +240,8 @@ namespace SHADE if (system->drawNavigationArea) { SHTransform trans; - trans.position = SHVec3{ 0.0f }; - trans.scale = navigationAreaSize; + trans.position = system->origin_editor; + trans.scale = system->size_editor; trans.ComputeTRS(); debugDrawSystem->DrawWireCube(trans.trs, SHColour::YELLOW, false); }