Compare commits
4 Commits
0ef60e5828
...
6a1c1ae27a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a1c1ae27a | ||
|
|
2ed3c12bc0 | ||
|
|
5b74665856 | ||
|
|
5d08d583e0 |
@ -1,5 +1,74 @@
|
|||||||
%YAML 1.1
|
%YAML 1.1
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &845841979693538474
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8232860728131925587}
|
||||||
|
- component: {fileID: 1299758831766912866}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: HurtBox
|
||||||
|
m_TagString: EnemyHurtBox
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8232860728131925587
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 845841979693538474}
|
||||||
|
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: []
|
||||||
|
m_Father: {fileID: 243343966221896818}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!70 &1299758831766912866
|
||||||
|
CapsuleCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 845841979693538474}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 3
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IncludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_ExcludeLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 0
|
||||||
|
m_LayerOverridePriority: 0
|
||||||
|
m_ForceSendLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ForceReceiveLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_ContactCaptureLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_CallbackLayers:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_CompositeOperation: 0
|
||||||
|
m_CompositeOrder: 0
|
||||||
|
m_Offset: {x: 0.001541889, y: -0.6988835}
|
||||||
|
m_Size: {x: 0.56149423, y: 0.24480417}
|
||||||
|
m_Direction: 1
|
||||||
--- !u!1 &4203408371334536830
|
--- !u!1 &4203408371334536830
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -208,6 +277,7 @@ Transform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 2045680922754072471}
|
- {fileID: 2045680922754072471}
|
||||||
- {fileID: 1693662441197515017}
|
- {fileID: 1693662441197515017}
|
||||||
|
- {fileID: 8232860728131925587}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!70 &3140493390153182690
|
--- !u!70 &3140493390153182690
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
Assets/Scenes/HomeTown/NavMesh-Navmesh.asset
Normal file
BIN
Assets/Scenes/HomeTown/NavMesh-Navmesh.asset
Normal file
Binary file not shown.
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 2fe1d45b05d429942bb729a071517972
|
guid: 96a029d6ffe5e684dab21995ac7545d8
|
||||||
NativeFormatImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
mainObjectFileID: 23800000
|
mainObjectFileID: 23800000
|
||||||
@ -2,24 +2,11 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Unity.IO.LowLevel.Unsafe;
|
using Unity.IO.LowLevel.Unsafe;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using static UnityEditor.PlayerSettings;
|
||||||
|
|
||||||
namespace AI.Base {
|
namespace AI.Base {
|
||||||
public class EnemyStateManager : MonoBehaviour {
|
public class EnemyStateManager : MonoBehaviour {
|
||||||
public static EnemyStateManager Instance;
|
public static EnemyStateManager Instance;
|
||||||
public static List<GoblerStateManager> Goblers = new List<GoblerStateManager>();
|
public static List<GoblerStateManager> Goblers = new List<GoblerStateManager>();
|
||||||
public static Action UpdateTick;
|
|
||||||
public static Action GizmoTick;
|
|
||||||
|
|
||||||
public void Awake() {
|
|
||||||
Instance = this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update() {
|
|
||||||
UpdateTick?.Invoke();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void OnDrawGizmos() {
|
|
||||||
GizmoTick?.Invoke();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@ using System.Xml.Linq;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.AI;
|
using UnityEngine.AI;
|
||||||
|
|
||||||
public class GoblerStateManager {
|
public class GoblerStateManager : Alive {
|
||||||
[Header("Mechanics Attributes")]
|
[Header("Mechanics Attributes")]
|
||||||
[SerializeField] public float ChaseDistance = 10f;
|
[SerializeField] public float ChaseDistance = 10f;
|
||||||
[SerializeField] public float ChaseDistanceBuffer = 1f;
|
[SerializeField] public float ChaseDistanceBuffer = 1f;
|
||||||
@ -40,6 +40,12 @@ public class GoblerStateManager {
|
|||||||
PathAgent.updateRotation = false;
|
PathAgent.updateRotation = false;
|
||||||
PathAgent.updateUpAxis = false;
|
PathAgent.updateUpAxis = false;
|
||||||
PathAgent.speed = Speed;
|
PathAgent.speed = Speed;
|
||||||
|
IsUpdating = false;
|
||||||
|
|
||||||
|
MaxHealth = 100;
|
||||||
|
CurrentHealth = MaxHealth;
|
||||||
|
OnDeath += () => SetState(State.Die);
|
||||||
|
|
||||||
SetState(State.GoToCrystal);
|
SetState(State.GoToCrystal);
|
||||||
EnemySpawnerManager.UpdateTick += Update;
|
EnemySpawnerManager.UpdateTick += Update;
|
||||||
EnemySpawnerManager.GizmoTick += OnDrawGizmos;
|
EnemySpawnerManager.GizmoTick += OnDrawGizmos;
|
||||||
@ -72,6 +78,7 @@ public class GoblerStateManager {
|
|||||||
private bool IsUpdating;
|
private bool IsUpdating;
|
||||||
protected void Update() {
|
protected void Update() {
|
||||||
if (Owner == null) return;
|
if (Owner == null) return;
|
||||||
|
if (GameManager.Crystal == null) return;
|
||||||
if (IsUpdating) return;
|
if (IsUpdating) return;
|
||||||
IsUpdating = true;
|
IsUpdating = true;
|
||||||
|
|
||||||
@ -87,8 +94,8 @@ public class GoblerStateManager {
|
|||||||
case State.GoToCrystal:
|
case State.GoToCrystal:
|
||||||
PathAgent.SetDestination(CrystalPos);
|
PathAgent.SetDestination(CrystalPos);
|
||||||
|
|
||||||
if (DistFromCrystal < 1)
|
//if (DistFromCrystal < 1)
|
||||||
SetState(State.Die);
|
// SetState(State.Die);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
@ -102,8 +109,8 @@ public class GoblerStateManager {
|
|||||||
|
|
||||||
if (DistFromPlayer > ChaseDistance + ChaseDistanceBuffer)
|
if (DistFromPlayer > ChaseDistance + ChaseDistanceBuffer)
|
||||||
SetState(State.GoToCrystal);
|
SetState(State.GoToCrystal);
|
||||||
else if (DistFromPlayer < 1)
|
//else if (DistFromPlayer < 1)
|
||||||
SetState(State.Die);
|
// SetState(State.Die);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
@ -115,7 +122,7 @@ public class GoblerStateManager {
|
|||||||
|
|
||||||
|
|
||||||
case State.Die:
|
case State.Die:
|
||||||
EnemySpawnerManager.RemoveGobler(this);
|
EnemySpawnerManager.RemoveGobler(Owner);
|
||||||
SetState(State.None);
|
SetState(State.None);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -172,9 +179,7 @@ public class GoblerStateManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void DrawChaseDistance() {
|
private void DrawChaseDistance() {
|
||||||
Gizmos.color = Color.green;
|
EnemySpawnerManager.DrawWireSphere(Color.green, MyPos, ChaseDistance);
|
||||||
Vector2 center = MyPos;
|
|
||||||
Gizmos.DrawWireSphere(center, ChaseDistance);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawAttackDistance() {
|
private void DrawAttackDistance() {
|
||||||
@ -189,6 +194,50 @@ public class GoblerStateManager {
|
|||||||
|
|
||||||
Vector2 direction2D = (PlayerPos - MyPos).normalized;
|
Vector2 direction2D = (PlayerPos - MyPos).normalized;
|
||||||
Vector2 point2D = MyPos + direction2D * AttackDistance;
|
Vector2 point2D = MyPos + direction2D * AttackDistance;
|
||||||
Gizmos.DrawWireSphere(point2D, AttackMaskDiameter);
|
//Gizmos.DrawWireSphere(point2D, AttackMaskDiameter);
|
||||||
|
EnemySpawnerManager.DrawWireSphere(Color.red, point2D, AttackMaskDiameter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class Alive {
|
||||||
|
public int MaxHealth { get; protected set; }
|
||||||
|
public int CurrentHealth { get; protected set; }
|
||||||
|
public bool IsDead => CurrentHealth <= 0;
|
||||||
|
|
||||||
|
public bool IsInvincible => Time.time < invincibleUntil;
|
||||||
|
protected float invincibleUntil = 0f;
|
||||||
|
|
||||||
|
protected float invincibilityDuration = 1f;
|
||||||
|
|
||||||
|
public event Action<int, Vector2> OnTakeDamage;
|
||||||
|
public event Action OnDeath;
|
||||||
|
public event Action<int> OnHeal;
|
||||||
|
|
||||||
|
public void TakeDamage(int amount, Vector2 hitDirection) {
|
||||||
|
if (IsDead || IsInvincible) return;
|
||||||
|
|
||||||
|
CurrentHealth -= amount;
|
||||||
|
CurrentHealth = Mathf.Max(CurrentHealth, 0);
|
||||||
|
invincibleUntil = Time.time + invincibilityDuration;
|
||||||
|
|
||||||
|
hitDirection = hitDirection.normalized;
|
||||||
|
OnTakeDamage?.Invoke(amount, hitDirection);
|
||||||
|
|
||||||
|
if (CurrentHealth == 0) OnDeath?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Heal(int amount) {
|
||||||
|
if (IsDead) return;
|
||||||
|
|
||||||
|
CurrentHealth += amount;
|
||||||
|
CurrentHealth = Mathf.Min(CurrentHealth, MaxHealth);
|
||||||
|
OnHeal?.Invoke(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset() {
|
||||||
|
CurrentHealth = MaxHealth;
|
||||||
|
invincibleUntil = 0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics.Contracts;
|
using System.Diagnostics.Contracts;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -20,6 +21,8 @@ public class ClassBase {
|
|||||||
//[HideInInspector] public List<Ability> Abilities;
|
//[HideInInspector] public List<Ability> Abilities;
|
||||||
|
|
||||||
protected Player Player;
|
protected Player Player;
|
||||||
|
protected Transform PlayerTransform { get { return Player.transform; } }
|
||||||
|
protected Vector2 PlayerPos { get { return PlayerTransform.position; } }
|
||||||
protected Animator Animator;
|
protected Animator Animator;
|
||||||
protected AttackAnimatorFactory AttackAnimator;
|
protected AttackAnimatorFactory AttackAnimator;
|
||||||
protected float PlayerOriginalSpeed;
|
protected float PlayerOriginalSpeed;
|
||||||
@ -91,4 +94,40 @@ public class ClassBase {
|
|||||||
Debug.Log($"[{Name}] Updating skill count [{SkillCount}/{SkillCountMax}]");
|
Debug.Log($"[{Name}] Updating skill count [{SkillCount}/{SkillCountMax}]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
protected Coroutine AttackCoroutine;
|
||||||
|
protected void CreateHitBoxOffset(float centerOffset, float radius, float hitDelay, float hitDuration) {
|
||||||
|
if (AttackCoroutine != null)
|
||||||
|
Player.Instance.StopCoroutine(AttackCoroutine);
|
||||||
|
var center = PlayerPos + Player.PrevDirection * centerOffset;
|
||||||
|
AttackCoroutine = Player.Instance.StartCoroutine(CreateHitBoxHelper(center, radius, hitDelay, hitDuration));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected IEnumerator CreateHitBoxHelper(Vector2 center, float radius, float hitDelay, float hitDuration) {
|
||||||
|
HitBoxDraw.Center = center;
|
||||||
|
Debug.Log(PlayerPos);
|
||||||
|
HitBoxDraw.Center += Vector2.down;
|
||||||
|
HitBoxDraw.Radius = radius;
|
||||||
|
HitBoxDraw.Color = Color.green;
|
||||||
|
HitBoxDraw.Draw = true;
|
||||||
|
|
||||||
|
yield return new WaitForSeconds(hitDelay);
|
||||||
|
HitBoxDraw.Active = true;
|
||||||
|
HitBoxDraw.Color = Color.red;
|
||||||
|
|
||||||
|
yield return new WaitForSeconds(hitDuration);
|
||||||
|
HitBoxDraw.Active = false;
|
||||||
|
HitBoxDraw.Draw = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HitBoxDrawClass HitBoxDraw = new HitBoxDrawClass();
|
||||||
|
public class HitBoxDrawClass {
|
||||||
|
public bool Draw;
|
||||||
|
public bool Active;
|
||||||
|
public Vector2 Center;
|
||||||
|
public float Radius;
|
||||||
|
public Color Color;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,9 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using Unity.VisualScripting;
|
using Unity.VisualScripting;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using static UnityEngine.RuleTile.TilingRuleOutput;
|
||||||
|
|
||||||
[System.Serializable]
|
[System.Serializable]
|
||||||
public class MeleeFighterClass : ClassBase {
|
public class MeleeFighterClass : ClassBase {
|
||||||
@ -26,6 +28,7 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
Skills.Add(AttackState.BladeVortex, new ClassSkill("BladeVortex", 2f, 3));
|
Skills.Add(AttackState.BladeVortex, new ClassSkill("BladeVortex", 2f, 3));
|
||||||
Skills.Add(AttackState.Shockwave, new ClassSkill("Shockwave", 2f, 3));
|
Skills.Add(AttackState.Shockwave, new ClassSkill("Shockwave", 2f, 3));
|
||||||
GenerateAvailableSkillsList();
|
GenerateAvailableSkillsList();
|
||||||
|
Player.GizmoTick += GizmoTick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -59,11 +62,23 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
Player.SkillInUse = false;
|
Player.SkillInUse = false;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
||||||
case AttackState.BasicAttack1:
|
case AttackState.BasicAttack1:
|
||||||
AllowBladeVortex = ComboTimeElapsed <= 0.1f;
|
AllowBladeVortex = ComboTimeElapsed <= 0.1f;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
case AttackState.BasicAttack3:
|
||||||
|
if (ComboTimeElapsed <= 0.1) break;
|
||||||
|
ChangeState(AttackState.KineticSurgeRelease);
|
||||||
|
AttackAnimator.MeleeResetKineticCharge();
|
||||||
|
AttackAnimator.MeleeKineticSurge();
|
||||||
|
AnimationToPlay = "Attack1";
|
||||||
|
TextPopUp.SpawnFloatingText("KineticSurge", Color.red, 3);
|
||||||
|
AllowBladeVortex = ComboTimeElapsed <= 0.1f;
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
//case AttackState.ChargeSurgeA:
|
//case AttackState.ChargeSurgeA:
|
||||||
// ChargingAnAttack = Input.GetMouseButton(0);
|
// ChargingAnAttack = Input.GetMouseButton(0);
|
||||||
// HandleCharging(TimeElapsed);
|
// HandleCharging(TimeElapsed);
|
||||||
@ -78,15 +93,6 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
// break;
|
// break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurrentState == AttackState.BasicAttack3 && ComboTimeElapsed > 0.1) {
|
|
||||||
ChangeState(AttackState.KineticSurgeRelease);
|
|
||||||
AttackAnimator.MeleeResetKineticCharge();
|
|
||||||
AttackAnimator.MeleeKineticSurge();
|
|
||||||
AnimationToPlay = "Attack1";
|
|
||||||
TextPopUp.SpawnFloatingText("KineticSurge", Color.red, 3);
|
|
||||||
//Player.SkillInUse = false;
|
|
||||||
//Player.MoveSpeed = PlayerOriginalSpeed;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!ChargingAnAttack && TimesUp || Player.IsJumping) {
|
if (!ChargingAnAttack && TimesUp || Player.IsJumping) {
|
||||||
Player.MoveSpeedDampener = 1;
|
Player.MoveSpeedDampener = 1;
|
||||||
@ -210,8 +216,7 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
case AttackState.None:
|
case AttackState.None:
|
||||||
if (Player.IsDashing) {
|
if (Player.IsDashing) {
|
||||||
} else if (Player.IsJumping) {
|
} else if (Player.IsJumping) {
|
||||||
} else {
|
} else { }
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AttackState.Shockwave:
|
case AttackState.Shockwave:
|
||||||
@ -227,16 +232,19 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
case AttackState.BasicAttack1:
|
case AttackState.BasicAttack1:
|
||||||
AnimationToPlay = "Attack1";
|
AnimationToPlay = "Attack1";
|
||||||
AttackAnimator.MeleeBasic(1);
|
AttackAnimator.MeleeBasic(1);
|
||||||
|
CreateHitBoxOffset(2, 3, 0.1f, 0.1f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AttackState.BasicAttack2:
|
case AttackState.BasicAttack2:
|
||||||
AnimationToPlay = "Attack2";
|
AnimationToPlay = "Attack2";
|
||||||
AttackAnimator.MeleeBasic(2);
|
AttackAnimator.MeleeBasic(2);
|
||||||
|
CreateHitBoxOffset(2, 3, 0.1f, 0.1f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AttackState.BasicAttack3:
|
case AttackState.BasicAttack3:
|
||||||
AnimationToPlay = "Attack1";
|
AnimationToPlay = "Attack1";
|
||||||
AttackAnimator.MeleeBasic(3);
|
AttackAnimator.MeleeBasic(3);
|
||||||
|
CreateHitBoxOffset(2, 3, 0.1f, 0.1f);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AttackState.KineticSurgeRelease:
|
case AttackState.KineticSurgeRelease:
|
||||||
@ -246,6 +254,14 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void GizmoTick() {
|
||||||
|
if (HitBoxDraw == null) return;
|
||||||
|
if (!HitBoxDraw.Draw) return;
|
||||||
|
|
||||||
|
Player.DrawWireSphere(HitBoxDraw.Color, HitBoxDraw.Center, HitBoxDraw.Radius);
|
||||||
|
}
|
||||||
|
|
||||||
public void RotateTowardsMouse() {
|
public void RotateTowardsMouse() {
|
||||||
return;
|
return;
|
||||||
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
|
||||||
@ -256,4 +272,6 @@ public class MeleeFighterClass : ClassBase {
|
|||||||
Player.LastDirection = (direction.y > 0) ? Player.Direction.Up : Player.Direction.Down;
|
Player.LastDirection = (direction.y > 0) ? Player.Direction.Up : Player.Direction.Down;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
54
Assets/Scripts/Runtime/Characters/Player/PlayerHitHandler.cs
Normal file
54
Assets/Scripts/Runtime/Characters/Player/PlayerHitHandler.cs
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
public class PlayerHitHandler {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PlayerHealth {
|
||||||
|
public int MaxHealth { get; private set; }
|
||||||
|
public int CurrentHealth { get; private set; }
|
||||||
|
public bool IsDead => CurrentHealth <= 0;
|
||||||
|
|
||||||
|
public bool IsInvincible => Time.time < invincibleUntil;
|
||||||
|
private float invincibleUntil = 0f;
|
||||||
|
|
||||||
|
private float invincibilityDuration = 1f; // seconds
|
||||||
|
|
||||||
|
public event Action<int, Vector2> OnTakeDamage;
|
||||||
|
public event Action OnDeath;
|
||||||
|
public event Action<int> OnHeal;
|
||||||
|
|
||||||
|
public PlayerHealth(int maxHealth, float invincibilityDuration = 1f) {
|
||||||
|
MaxHealth = maxHealth;
|
||||||
|
CurrentHealth = maxHealth;
|
||||||
|
this.invincibilityDuration = invincibilityDuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TakeDamage(int amount, Vector2 hitDirection) {
|
||||||
|
if (IsDead || IsInvincible) return;
|
||||||
|
|
||||||
|
CurrentHealth -= amount;
|
||||||
|
CurrentHealth = Mathf.Max(CurrentHealth, 0);
|
||||||
|
invincibleUntil = Time.time + invincibilityDuration;
|
||||||
|
|
||||||
|
OnTakeDamage?.Invoke(amount, hitDirection);
|
||||||
|
|
||||||
|
if (CurrentHealth == 0) {
|
||||||
|
OnDeath?.Invoke();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Heal(int amount) {
|
||||||
|
if (IsDead) return;
|
||||||
|
|
||||||
|
CurrentHealth += amount;
|
||||||
|
CurrentHealth = Mathf.Min(CurrentHealth, MaxHealth);
|
||||||
|
OnHeal?.Invoke(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset() {
|
||||||
|
CurrentHealth = MaxHealth;
|
||||||
|
invincibleUntil = 0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 988d61f0d3db97b4fb922459bd019de3
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -5,6 +6,7 @@ using UnityEditor;
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
using static UnityEngine.EventSystems.EventTrigger;
|
||||||
|
|
||||||
[SelectionBase]
|
[SelectionBase]
|
||||||
public class Player : MonoBehaviour {
|
public class Player : MonoBehaviour {
|
||||||
@ -54,6 +56,7 @@ public class Player : MonoBehaviour {
|
|||||||
[HideInInspector] public GameObjectPool VfxShockwavePool;
|
[HideInInspector] public GameObjectPool VfxShockwavePool;
|
||||||
|
|
||||||
private BoxCollider2D[] BoxColliders;
|
private BoxCollider2D[] BoxColliders;
|
||||||
|
private bool LockMovement;
|
||||||
|
|
||||||
|
|
||||||
public Vector2 PrevDirection = Vector2.zero;
|
public Vector2 PrevDirection = Vector2.zero;
|
||||||
@ -88,16 +91,21 @@ public class Player : MonoBehaviour {
|
|||||||
SetClass(1);
|
SetClass(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void Update() {
|
private void Update() {
|
||||||
KeyPressActions();
|
KeyPressActions();
|
||||||
GatherInput();
|
GatherInput();
|
||||||
UpdatePlayerStatus();
|
UpdatePlayerStatus();
|
||||||
ActiveClass.Tick();
|
UpdateActiveClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GatherInput() {
|
private void GatherInput() {
|
||||||
|
if (LockMovement) return;
|
||||||
MoveDirection.x = Input.GetAxisRaw("Horizontal");
|
MoveDirection.x = Input.GetAxisRaw("Horizontal");
|
||||||
MoveDirection.y = Input.GetAxisRaw("Vertical");
|
MoveDirection.y = Input.GetAxisRaw("Vertical");
|
||||||
|
if (MoveDirection.x != 0 || MoveDirection.y != 0)
|
||||||
|
PrevDirection = MoveDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void KeyPressActions() {
|
private void KeyPressActions() {
|
||||||
@ -123,6 +131,7 @@ public class Player : MonoBehaviour {
|
|||||||
private void DoDash() {
|
private void DoDash() {
|
||||||
if (!CanDash) return;
|
if (!CanDash) return;
|
||||||
if (!ActionAfterJumpReady) return;
|
if (!ActionAfterJumpReady) return;
|
||||||
|
if (LockMovement) return;
|
||||||
if (Stamina < 25) return;
|
if (Stamina < 25) return;
|
||||||
Stamina -= 25;
|
Stamina -= 25;
|
||||||
CanDash = false;
|
CanDash = false;
|
||||||
@ -130,12 +139,16 @@ public class Player : MonoBehaviour {
|
|||||||
DashDirection = MoveDirection.normalized;
|
DashDirection = MoveDirection.normalized;
|
||||||
if (DashDirection == Vector2.zero) return;
|
if (DashDirection == Vector2.zero) return;
|
||||||
DashSpeed = DashSpeedInitial;
|
DashSpeed = DashSpeedInitial;
|
||||||
|
if (IsJumping) {
|
||||||
|
LockMovement = true;
|
||||||
|
DashSpeed /= 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Jump() {
|
private void Jump(bool setJumpTime = true) {
|
||||||
if (SkillInUse) return;
|
if (SkillInUse) return;
|
||||||
IsJumping = true;
|
IsJumping = true;
|
||||||
LastJumpTime = Time.time;
|
if (setJumpTime) LastJumpTime = Time.time;
|
||||||
foreach (var col in BoxColliders)
|
foreach (var col in BoxColliders)
|
||||||
col.enabled = false;
|
col.enabled = false;
|
||||||
if (CoroutineJumpReset != null)
|
if (CoroutineJumpReset != null)
|
||||||
@ -150,6 +163,7 @@ public class Player : MonoBehaviour {
|
|||||||
foreach (var col in BoxColliders)
|
foreach (var col in BoxColliders)
|
||||||
col.enabled = true;
|
col.enabled = true;
|
||||||
IsJumping = false;
|
IsJumping = false;
|
||||||
|
LockMovement = false;
|
||||||
MoveSpeedDampener = 1;
|
MoveSpeedDampener = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,6 +192,20 @@ public class Player : MonoBehaviour {
|
|||||||
StaminaSliderHud.value = Stamina;
|
StaminaSliderHud.value = Stamina;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void UpdateActiveClass() {
|
||||||
|
if (ActiveClass == null) return;
|
||||||
|
ActiveClass.Tick();
|
||||||
|
|
||||||
|
if (ActiveClass.HitBoxDraw == null) return;
|
||||||
|
if (!ActiveClass.HitBoxDraw.Active) return;
|
||||||
|
Collider2D[] hits = Physics2D.OverlapCircleAll(ActiveClass.HitBoxDraw.Center, ActiveClass.HitBoxDraw.Radius);
|
||||||
|
foreach (var hit in hits) {
|
||||||
|
if (!hit.CompareTag("EnemyHurtBox")) continue;
|
||||||
|
|
||||||
|
GameObject parent = hit.transform.parent?.gameObject;
|
||||||
|
EnemySpawnerData.Goblers[parent].TakeDamage(30, transform.position - parent.transform.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -193,13 +221,16 @@ public class Player : MonoBehaviour {
|
|||||||
private void MovementUpdate() {
|
private void MovementUpdate() {
|
||||||
var movement = (MoveDirection.normalized * MoveSpeed) / MoveSpeedDampener;
|
var movement = (MoveDirection.normalized * MoveSpeed) / MoveSpeedDampener;
|
||||||
if (IsDashing) {
|
if (IsDashing) {
|
||||||
if (DashSpeed < 0.2f) {
|
if (DashSpeed < (IsJumping ? 0.4f : 0.2f)) {
|
||||||
DashSpeed = 0;
|
DashSpeed = 0;
|
||||||
CanDash = true;
|
CanDash = true;
|
||||||
IsDashing = false;
|
IsDashing = false;
|
||||||
} else if (DashSpeed > (movement.magnitude * 2)) {
|
} else if (DashSpeed > (movement.magnitude * 2)) {
|
||||||
if (IsJumping) Jump();
|
if (IsJumping) Jump(false);
|
||||||
movement = DashDirection * DashSpeed;
|
movement = DashDirection * DashSpeed;
|
||||||
|
if (IsJumping)
|
||||||
|
DashSpeed *= Mathf.Exp(-DashDecayRate * Time.deltaTime / 3);
|
||||||
|
else
|
||||||
DashSpeed *= Mathf.Exp(-DashDecayRate * Time.deltaTime);
|
DashSpeed *= Mathf.Exp(-DashDecayRate * Time.deltaTime);
|
||||||
} else {
|
} else {
|
||||||
movement = ((DashDirection * DashSpeed) + movement) / 2;
|
movement = ((DashDirection * DashSpeed) + movement) / 2;
|
||||||
@ -221,22 +252,93 @@ public class Player : MonoBehaviour {
|
|||||||
public enum Direction { Up, Down, Left, Right }
|
public enum Direction { Up, Down, Left, Right }
|
||||||
public Direction LastDirection = Direction.Down;
|
public Direction LastDirection = Direction.Down;
|
||||||
private string GetAnimationState(Vector2 input) {
|
private string GetAnimationState(Vector2 input) {
|
||||||
if (SkillInUse) return ActiveClass.AnimationToPlay;
|
|
||||||
if (!IsJumping && input.sqrMagnitude < 0.01f) return "Idle";
|
|
||||||
|
|
||||||
if (Mathf.Abs(input.x) > 0)
|
if (Mathf.Abs(input.x) > 0)
|
||||||
LastDirection = (input.x > 0) ? Direction.Right : Direction.Left;
|
LastDirection = (input.x > 0) ? Direction.Right : Direction.Left;
|
||||||
else if (Mathf.Abs(input.y) > 0)
|
else if (Mathf.Abs(input.y) > 0)
|
||||||
LastDirection = (input.y > 0) ? Direction.Up : Direction.Down;
|
LastDirection = (input.y > 0) ? Direction.Up : Direction.Down;
|
||||||
|
|
||||||
|
|
||||||
|
if (SkillInUse) return ActiveClass.AnimationToPlay;
|
||||||
|
if (!IsJumping && input.sqrMagnitude < 0.01f) return "Idle";
|
||||||
if (IsJumping) return "Jump";
|
if (IsJumping) return "Jump";
|
||||||
return "Run";
|
return "Run";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//[Header("Health Settings")]
|
||||||
|
//public int maxHealth = 100;
|
||||||
|
//public float invincibilityTime = 1f;
|
||||||
|
|
||||||
|
//[Header("Knockback")]
|
||||||
|
//public float knockbackForce = 5f;
|
||||||
|
|
||||||
|
//private Rigidbody2D rb;
|
||||||
|
//private PlayerHealth health;
|
||||||
|
|
||||||
|
//void Start() {
|
||||||
|
// rb = GetComponent<Rigidbody2D>();
|
||||||
|
// health = new PlayerHealth(maxHealth, invincibilityTime);
|
||||||
|
|
||||||
|
// health.OnTakeDamage += HandleDamage;
|
||||||
|
// health.OnDeath += HandleDeath;
|
||||||
|
// health.OnHeal += HandleHeal;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void HandleDamage(int damage, Vector2 hitDirection) {
|
||||||
|
// Debug.Log($"Took {damage} damage from {hitDirection}. Remaining: {health.CurrentHealth}");
|
||||||
|
|
||||||
|
// // Apply knockback
|
||||||
|
// Vector2 knockDir = hitDirection.normalized;
|
||||||
|
// rb.velocity = Vector2.zero; // cancel momentum before applying
|
||||||
|
// rb.AddForce(knockDir * knockbackForce, ForceMode2D.Impulse);
|
||||||
|
|
||||||
|
// // TODO: Play hit animation, flash sprite, etc.
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void HandleHeal(int amount) {
|
||||||
|
// Debug.Log($"Healed {amount}. Current HP: {health.CurrentHealth}");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//void HandleDeath() {
|
||||||
|
// Debug.Log("Player has died.");
|
||||||
|
// // TODO: Trigger death animation, disable input, etc.
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void ReceiveHit(int damage, Vector2 hitOrigin) {
|
||||||
|
// Vector2 hitDirection = (transform.position - (Vector3)hitOrigin).normalized;
|
||||||
|
// health.TakeDamage(damage, hitDirection);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void Heal(int amount) {
|
||||||
|
// health.Heal(amount);
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static Action GizmoTick;
|
||||||
void OnDrawGizmos() {
|
void OnDrawGizmos() {
|
||||||
DrawPlayerDirection();
|
DrawPlayerDirection();
|
||||||
|
GizmoTick?.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DrawWireSphere(Color color, Vector3 center, float radius) {
|
||||||
|
Gizmos.color = color;
|
||||||
|
Gizmos.DrawWireSphere(center, radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawPlayerDirection() {
|
private void DrawPlayerDirection() {
|
||||||
|
|||||||
@ -10,12 +10,13 @@ using static EnemySpawnerManager;
|
|||||||
|
|
||||||
public class EnemySpawnerManager : MonoBehaviour {
|
public class EnemySpawnerManager : MonoBehaviour {
|
||||||
public static EnemySpawnerManager Instance;
|
public static EnemySpawnerManager Instance;
|
||||||
[SerializeField] public GameObject GoblerPreFab;
|
|
||||||
private GameObjectPool GoblerPool;
|
|
||||||
public static Dictionary<GoblerStateManager, GameObject> Goblers = new Dictionary<GoblerStateManager, GameObject>();
|
|
||||||
public static Action UpdateTick;
|
public static Action UpdateTick;
|
||||||
public static Action GizmoTick;
|
public static Action GizmoTick;
|
||||||
public static int MaxGoblers = 100;
|
|
||||||
|
[SerializeField] public GameObject GoblerPreFab;
|
||||||
|
private GameObjectPool GoblerPool;
|
||||||
|
[SerializeField] public bool CanStartSpawning = true;
|
||||||
|
|
||||||
|
|
||||||
public class Gobler {
|
public class Gobler {
|
||||||
public GameObject Object;
|
public GameObject Object;
|
||||||
@ -29,24 +30,42 @@ public class EnemySpawnerManager : MonoBehaviour {
|
|||||||
|
|
||||||
public void Awake() {
|
public void Awake() {
|
||||||
Instance = this;
|
Instance = this;
|
||||||
Goblers.Clear();
|
EnemySpawnerData.Goblers.Clear();
|
||||||
GoblerPool = new GameObjectPool(GoblerPreFab, 50, 200);
|
GoblerPool = new GameObjectPool(GoblerPreFab, 50, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemoveGobler(GoblerStateManager goblerManager) {
|
public static void RemoveGobler(GameObject gameObject) {
|
||||||
Destroy(Goblers[goblerManager]);
|
Destroy(gameObject);
|
||||||
Goblers.Remove(goblerManager);
|
EnemySpawnerData.Goblers.Remove(gameObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update() {
|
public void Update() {
|
||||||
while (Goblers.Count() < MaxGoblers) {
|
StartSpawning();
|
||||||
var gobler = GoblerPool.Get(transform.position, Quaternion.identity);
|
|
||||||
Goblers.Add(new GoblerStateManager(gobler), gobler);
|
|
||||||
}
|
|
||||||
UpdateTick?.Invoke();
|
UpdateTick?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OnDrawGizmos() {
|
public void StartSpawning() {
|
||||||
|
if (!CanStartSpawning) return;
|
||||||
|
|
||||||
|
while (EnemySpawnerData.Goblers.Count() < EnemySpawnerData.MaxGoblers) {
|
||||||
|
var gobler = GoblerPool.Get(transform.position, Quaternion.identity);
|
||||||
|
EnemySpawnerData.Goblers.Add(gobler, new GoblerStateManager(gobler));
|
||||||
|
}
|
||||||
|
|
||||||
|
CanStartSpawning = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnDrawGizmos() {
|
||||||
GizmoTick?.Invoke();
|
GizmoTick?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawWireSphere(Color color, Vector3 center, float radius) {
|
||||||
|
Gizmos.color = color;
|
||||||
|
Gizmos.DrawWireSphere(center, radius);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class EnemySpawnerData {
|
||||||
|
public static Dictionary<GameObject, GoblerStateManager> Goblers = new Dictionary<GameObject, GoblerStateManager>();
|
||||||
|
public static int MaxGoblers = 100;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"com.unity.ai.navigation": "2.0.8",
|
|
||||||
"com.unity.cinemachine": "3.1.4",
|
"com.unity.cinemachine": "3.1.4",
|
||||||
"com.unity.collab-proxy": "2.8.2",
|
"com.unity.collab-proxy": "2.8.2",
|
||||||
"com.unity.feature.2d": "2.0.1",
|
"com.unity.feature.2d": "2.0.1",
|
||||||
|
|||||||
@ -96,15 +96,6 @@
|
|||||||
},
|
},
|
||||||
"url": "https://packages.unity.com"
|
"url": "https://packages.unity.com"
|
||||||
},
|
},
|
||||||
"com.unity.ai.navigation": {
|
|
||||||
"version": "2.0.8",
|
|
||||||
"depth": 0,
|
|
||||||
"source": "registry",
|
|
||||||
"dependencies": {
|
|
||||||
"com.unity.modules.ai": "1.0.0"
|
|
||||||
},
|
|
||||||
"url": "https://packages.unity.com"
|
|
||||||
},
|
|
||||||
"com.unity.bindings.openimageio": {
|
"com.unity.bindings.openimageio": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"depth": 1,
|
"depth": 1,
|
||||||
|
|||||||
@ -466,22 +466,22 @@ MonoBehaviour:
|
|||||||
x: 0
|
x: 0
|
||||||
y: 21
|
y: 21
|
||||||
width: 967.33325
|
width: 967.33325
|
||||||
height: 513
|
height: 510.3333
|
||||||
m_Scale: {x: 0.7125, y: 0.7125}
|
m_Scale: {x: 0.70879626, y: 0.70879626}
|
||||||
m_Translation: {x: 483.66663, y: 256.5}
|
m_Translation: {x: 483.66663, y: 255.16666}
|
||||||
m_MarginLeft: 0
|
m_MarginLeft: 0
|
||||||
m_MarginRight: 0
|
m_MarginRight: 0
|
||||||
m_MarginTop: 0
|
m_MarginTop: 0
|
||||||
m_MarginBottom: 0
|
m_MarginBottom: 0
|
||||||
m_LastShownAreaInsideMargins:
|
m_LastShownAreaInsideMargins:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
x: -678.8304
|
x: -682.3775
|
||||||
y: -360
|
y: -360
|
||||||
width: 1357.6608
|
width: 1364.755
|
||||||
height: 720
|
height: 720
|
||||||
m_MinimalGUI: 1
|
m_MinimalGUI: 1
|
||||||
m_defaultScale: 0.7125
|
m_defaultScale: 0.70879626
|
||||||
m_LastWindowPixelSize: {x: 967.33325, y: 534}
|
m_LastWindowPixelSize: {x: 967.33325, y: 531.3333}
|
||||||
m_ClearInEditMode: 1
|
m_ClearInEditMode: 1
|
||||||
m_NoCameraWarning: 1
|
m_NoCameraWarning: 1
|
||||||
m_LowResolutionForAspectRatios: 00000000000000000000
|
m_LowResolutionForAspectRatios: 00000000000000000000
|
||||||
@ -1030,6 +1030,20 @@ MonoBehaviour:
|
|||||||
layout: 4
|
layout: 4
|
||||||
size: {x: 0, y: 0}
|
size: {x: 0, y: 0}
|
||||||
sizeOverridden: 0
|
sizeOverridden: 0
|
||||||
|
- dockPosition: 1
|
||||||
|
containerId: overlay-container--right
|
||||||
|
displayed: 0
|
||||||
|
id: AINavigationOverlay
|
||||||
|
index: 15
|
||||||
|
contents: '{"m_Layout":4,"m_Collapsed":false,"m_Floating":false,"m_FloatingSnapOffset":{"x":0.0,"y":0.0},"m_SnapOffsetDelta":{"x":0.0,"y":0.0},"m_FloatingSnapCorner":0,"m_Size":{"x":0.0,"y":0.0},"m_SizeOverridden":false}'
|
||||||
|
floating: 0
|
||||||
|
collapsed: 0
|
||||||
|
snapOffset: {x: 0, y: 0}
|
||||||
|
snapOffsetDelta: {x: 0, y: 0}
|
||||||
|
snapCorner: 0
|
||||||
|
layout: 4
|
||||||
|
size: {x: 0, y: 0}
|
||||||
|
sizeOverridden: 0
|
||||||
m_ContainerData:
|
m_ContainerData:
|
||||||
- containerId: overlay-toolbar__top
|
- containerId: overlay-toolbar__top
|
||||||
scrollOffset: 0
|
scrollOffset: 0
|
||||||
@ -1057,7 +1071,7 @@ MonoBehaviour:
|
|||||||
m_AudioPlay: 0
|
m_AudioPlay: 0
|
||||||
m_DebugDrawModesUseInteractiveLightBakingData: 0
|
m_DebugDrawModesUseInteractiveLightBakingData: 0
|
||||||
m_Position:
|
m_Position:
|
||||||
m_Target: {x: 18.246088, y: -15.302499, z: -0.026065793}
|
m_Target: {x: 2.3566494, y: 51.885063, z: 0}
|
||||||
speed: 2
|
speed: 2
|
||||||
m_Value: {x: 18.246088, y: -15.302499, z: -0.026065793}
|
m_Value: {x: 18.246088, y: -15.302499, z: -0.026065793}
|
||||||
m_RenderMode: 0
|
m_RenderMode: 0
|
||||||
@ -1109,7 +1123,7 @@ MonoBehaviour:
|
|||||||
speed: 2
|
speed: 2
|
||||||
m_Value: {x: 0, y: 0, z: 0, w: 1}
|
m_Value: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_Size:
|
m_Size:
|
||||||
m_Target: 12.606543
|
m_Target: 31.994295
|
||||||
speed: 2
|
speed: 2
|
||||||
m_Value: 12.606543
|
m_Value: 12.606543
|
||||||
m_Ortho:
|
m_Ortho:
|
||||||
@ -1375,7 +1389,7 @@ MonoBehaviour:
|
|||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs: 03ca9a3b
|
m_SelectedIDs: 03ca9a3b
|
||||||
m_LastClickedID: 1000000003
|
m_LastClickedID: 1000000003
|
||||||
m_ExpandedIDs: 00000000e8a50000eaa50000eca50000eea50000f0a50000f2a50000f4a50000f6a50000f8a50000faa50000fca50000fea5000000a6000002a6000004a6000006a6000008a600000aa600000ca600000ea6000010a6000012a6000014a6000016a6000018a600001aa600001ca600001ea6000020a6000022a6000024a6000026a6000028a600002aa60000
|
m_ExpandedIDs: 00000000aea70000b0a70000b2a70000b4a70000b6a70000b8a70000baa70000bca70000bea70000c0a70000c2a70000c4a70000c6a70000c8a70000caa70000cca70000cea70000d0a70000d2a70000d4a70000d6a70000d8a70000daa70000dca70000dea70000e0a70000e2a70000e4a70000e6a70000e8a70000eaa70000eca70000eea70000f0a70000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
@ -1404,7 +1418,7 @@ MonoBehaviour:
|
|||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 00000000e8a50000eaa50000eca50000eea50000f0a50000f2a50000f4a50000f6a50000f8a50000faa50000fca50000fea5000000a6000002a6000004a6000006a6000008a600000aa600000ca600000ea6000010a6000012a6000014a6000016a6000018a600001aa600001ca600001ea6000020a6000022a6000024a6000026a6000028a600002aa60000
|
m_ExpandedIDs: 00000000aea70000b0a70000b2a70000b4a70000b6a70000b8a70000baa70000bca70000bea70000c0a70000c2a70000c4a70000c6a70000c8a70000caa70000cca70000cea70000d0a70000d2a70000d4a70000d6a70000d8a70000daa70000dca70000dea70000e0a70000e2a70000e4a70000e6a70000e8a70000eaa70000eca70000eea70000f0a70000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user