#27 SandMole 스파인으로 변경 중

+ TransparentLit shadow 기능 추가
This commit is contained in:
Nam Tae Gun 2024-06-23 18:38:19 +09:00
parent 901b2cc967
commit 8cfa321479
65 changed files with 9036 additions and 12759 deletions

View File

@ -0,0 +1,108 @@
using BlueWater.Interfaces;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses
{
public abstract class AnimatorBoss : Boss, ICurrentDirection
{
// Variables
#region Variables
// Components
[field: Title("애니메이터 보스 컴포넌트")]
[field: SerializeField]
public SpriteRenderer SpriteRenderer { get; private set; }
[field: SerializeField]
public Animator Animator { get; private set; }
// Classes
[field: SerializeField]
public AnimationController AnimationController { get; private set; }
private bool _isMoving;
public bool IsMoving
{
get => _isMoving;
set
{
_isMoving = value;
AnimationController.SetAnimationParameter("isMoving", _isMoving);
}
}
private Vector3 _currentDirection = Vector3.right;
public Vector3 CurrentDirection
{
get => _currentDirection;
set
{
if (value == Vector3.zero) return;
_currentDirection = value;
AnimationController.SetAnimationParameter("xDirection", _currentDirection.x);
AnimationController.SetAnimationParameter("zDirection", _currentDirection.z);
}
}
// Unity events
#region Unity events
protected override void Update()
{
base.Update();
HandleMovement();
FlipVisualLook();
}
#endregion
#endregion
// Initialize methods
#region Initialize methods
[Button("컴포넌트 초기화")]
protected override void InitializeComponents()
{
base.InitializeComponents();
SpriteRenderer = VisualLook.GetComponent<SpriteRenderer>();
Animator = VisualLook.GetComponent<Animator>();
AnimationController = GetComponent<AnimationController>();
}
#endregion
// Methods
#region Methods
private void FlipVisualLook()
{
var localScale = VisualLook.localScale;
localScale.x = CurrentDirection.x switch
{
> 0.01f => Mathf.Abs(localScale.x),
< -0.01f => -Mathf.Abs(localScale.x),
_ => localScale.x
};
VisualLook.localScale = localScale;
}
private void HandleMovement()
{
if (!AstarAi.canMove || AstarAi.isStopped)
{
IsMoving = false;
return;
}
CurrentDirection = AstarAi.velocity.normalized;
IsMoving = AstarAi.velocity != Vector3.zero || AstarAi.velocity != Vector3.positiveInfinity;
}
#endregion
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cb9fe76049bc1454b8a03e0734a0e368
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- _aiMovement: {fileID: 11400000, guid: 5d32cc099076ade42ab5744c9bb621bb, type: 2}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -38,6 +38,7 @@ namespace BlueWater.Enemies.Bosses
#region Variables
// Components
[field: Title("보스 컴포넌트")]
[field: SerializeField]
public Rigidbody Rigidbody { get; private set; }
@ -50,12 +51,6 @@ namespace BlueWater.Enemies.Bosses
[field: SerializeField]
public Transform VisualLook { get; private set; }
[field: SerializeField]
public SpriteRenderer SpriteRenderer { get; private set; }
[field: SerializeField]
public Animator Animator { get; private set; }
[field: SerializeField]
public BoxCollider HitBoxCollider { get; private set; }
@ -63,9 +58,6 @@ namespace BlueWater.Enemies.Bosses
[field: SerializeField, Required]
public BossData BossData { get; private set; }
[field: SerializeField, Required]
public AnimationController AnimationController { get; private set; }
[field: SerializeField, Required]
public BossHealthPoint BossHealthPoint { get; private set; }
@ -76,9 +68,9 @@ namespace BlueWater.Enemies.Bosses
public BossSkillController BossSkillController { get; private set; }
[field: SerializeField]
public Collider Target { get; private set; }
public Collider Target { get; protected set; }
public IAstarAI IAstarAi;
public IAstarAI AstarAi;
#endregion
@ -97,7 +89,7 @@ namespace BlueWater.Enemies.Bosses
protected virtual void Start()
{
BossHealthPoint.OnDead += HandleDie;
BossHealthPoint.OnDead += Die;
Target = GameManager.Instance.CurrentCombatPlayer.GetComponent<Collider>();
}
@ -119,7 +111,7 @@ namespace BlueWater.Enemies.Bosses
protected virtual void OnDestroy()
{
BossHealthPoint.OnDead -= HandleDie;
BossHealthPoint.OnDead -= Die;
}
#endregion
@ -134,16 +126,13 @@ namespace BlueWater.Enemies.Bosses
CharacterCollider = GetComponent<CapsuleCollider>();
BehaviorTree = GetComponent<BehaviorTree>();
VisualLook = transform.Find("VisualLook");
SpriteRenderer = VisualLook.GetComponent<SpriteRenderer>();
Animator = VisualLook.GetComponent<Animator>();
HitBoxCollider = transform.Find("HitBox").GetComponent<BoxCollider>();
AnimationController = GetComponent<AnimationController>();
BossHealthPoint = GetComponent<BossHealthPoint>();
AIMovement = GetComponent<AiMovement>();
BossSkillController = GetComponent<BossSkillController>();
IAstarAi = GetComponent<IAstarAI>();
AstarAi = GetComponent<IAstarAI>();
}
#endregion
@ -154,7 +143,7 @@ namespace BlueWater.Enemies.Bosses
// Abstract methods
public virtual void Initialize() { }
protected abstract void HandleDie();
protected abstract void Die();
// Wrapping
// BossHealthPoint
@ -183,6 +172,10 @@ namespace BlueWater.Enemies.Bosses
public LayerMask TargetLayer => BossData.TargetLayer;
// Methods
public void ForceKillBoss()
{
BossHealthPoint.TakeDamage(100000);
}
#endregion
}

View File

@ -17,7 +17,7 @@ namespace BlueWater.Enemies.Bosses
private CapsuleCollider _characterCollider;
[SerializeField]
private SpriteRenderer _spriteRenderer;
private Renderer _renderer;
[SerializeField]
private Transform _particleInstantiateLocation;
@ -62,12 +62,15 @@ namespace BlueWater.Enemies.Bosses
// Events
public event Action<int> OnHealthChanged;
public event Action OnDead;
private void Awake()
{
InitializeComponent();
}
// Unity events
private void Start()
{
InitializeComponent();
_flashWhiteWaitTime = new WaitForSeconds(InvincibilityDuration);
_fieldBossHealthPointUi = CombatUiManager.Instance.FieldBossHealthPointUi;
}
@ -85,7 +88,7 @@ namespace BlueWater.Enemies.Bosses
private void InitializeComponent()
{
_characterCollider = GetComponent<CapsuleCollider>();
_spriteRenderer = GetComponentInChildren<SpriteRenderer>();
_renderer = GetComponentInChildren<Renderer>();
}
public void Initialize(bool enableHealthChangedEvent, int maxHealthPoint, string bossName, Transform particleInstantiateLocation = null)
@ -119,13 +122,13 @@ namespace BlueWater.Enemies.Bosses
var changeHp = Mathf.Max(CurrentHealthPoint - damageAmount, 0);
SetCurrentHealthPoint(changeHp);
if (_spriteRenderer.material.HasInt(_isHitHash))
if (_renderer.material.HasInt(_isHitHash))
{
Utils.StartUniqueCoroutine(this, ref _flashWhiteCoroutine, FlashWhiteCoroutine());
}
// 죽었는지 체크
if (changeHp == 0f)
if (changeHp == 0)
{
Die();
return;
@ -172,9 +175,9 @@ namespace BlueWater.Enemies.Bosses
private IEnumerator FlashWhiteCoroutine()
{
_spriteRenderer.material.SetInt(_isHitHash, 1);
_renderer.material.SetInt(_isHitHash, 1);
yield return _flashWhiteWaitTime;
_spriteRenderer.material.SetInt(_isHitHash, 0);
_renderer.material.SetInt(_isHitHash, 0);
Utils.EndUniqueCoroutine(this, ref _flashWhiteCoroutine);
}
@ -184,5 +187,13 @@ namespace BlueWater.Enemies.Bosses
IsInvincible = false;
Utils.EndUniqueCoroutine(this, ref _damageIntervalCoroutine);
}
public void HideFieldBossHealthPointUi()
{
if (_fieldBossHealthPointUi.gameObject.activeSelf)
{
_fieldBossHealthPointUi.SetActiveHpSlider(false);
}
}
}
}

View File

@ -81,7 +81,6 @@ namespace BlueWater.Enemies.Bosses
}
// Methods
public bool CanSkill(string skillName)
{
if (!_instantiateSkillDictionary.TryGetValue(skillName, out var skill))
@ -100,6 +99,14 @@ namespace BlueWater.Enemies.Bosses
OnEndSkill?.Invoke();
IsSkillActive = false;
}
public void StopAllCoroutine()
{
foreach (var element in _instantiateSkillDictionary.Values)
{
element.StopAllCoroutines();
}
}
#endregion
}

View File

@ -1,6 +1,6 @@
using BlueWater.Interfaces;
using BlueWater.Items;
using BlueWater.Items;
using BlueWater.Maps;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.Rhinoceros
@ -15,51 +15,14 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros
SkyFallSmash = 5
}
public class Rhinoceros : Boss, ICurrentDirection
public class Rhinoceros : AnimatorBoss
{
// Variables
#region Variables
[field: Title("Rhinoceros 컴포넌트")]
public RhinocerosData RhinocerosData { get; private set; }
public BossMapController BossMapController { get; private set; }
private bool _isMoving;
public bool IsMoving
{
get => _isMoving;
set
{
_isMoving = value;
AnimationController.SetAnimationParameter("isMoving", _isMoving);
}
}
private Vector3 _currentDirection = Vector3.right;
public Vector3 CurrentDirection
{
get => _currentDirection;
set
{
if (value == Vector3.zero) return;
_currentDirection = value;
AnimationController.SetAnimationParameter("xDirection", _currentDirection.x);
AnimationController.SetAnimationParameter("zDirection", _currentDirection.z);
}
}
#endregion
// Unity events
#region Unity events
protected override void Update()
{
base.Update();
HandleMovement();
FlipVisualLook();
}
#endregion
@ -89,43 +52,28 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros
// Methods
#region Methods
protected override void HandleDie()
protected override async void Die()
{
BossSkillController.StopAllCoroutine();
BehaviorTree.DisableBehavior();
StopMove();
HitBoxCollider.enabled = false;
if (Rigidbody)
{
Rigidbody.linearVelocity = Vector3.zero;
Rigidbody.isKinematic = true;
}
AnimationController.SetAnimationTrigger("isDead");
ItemManager.Instance.ItemDropRandomPosition(BossData.CharacterIdx, transform.position);
BossMapController.ClearMap();
}
private void FlipVisualLook()
{
var localScale = VisualLook.localScale;
localScale.x = CurrentDirection.x switch
while (AnimationController.GetCurrentAnimationNormalizedTime() <= 1f)
{
> 0.01f => Mathf.Abs(localScale.x),
< -0.01f => -Mathf.Abs(localScale.x),
_ => localScale.x
};
VisualLook.localScale = localScale;
}
private void HandleMovement()
{
if (!IAstarAi.canMove || IAstarAi.isStopped)
{
IsMoving = false;
return;
await Awaitable.NextFrameAsync();
}
CurrentDirection = IAstarAi.velocity.normalized;
IsMoving = IAstarAi.velocity != Vector3.zero || IAstarAi.velocity != Vector3.positiveInfinity;
ItemManager.Instance.ItemDropRandomPosition(BossData.CharacterIdx, transform.position);
Destroy(gameObject);
}
#endregion

View File

@ -1,161 +1,50 @@
using System.Collections;
using BehaviorDesigner.Runtime;
using BlueWater.Interfaces;
using BlueWater.Maps;
using Sirenix.OdinInspector;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace BlueWater.Enemies.Bosses.SandMole
{
public class MiniSandMole : MonoBehaviour, ITarget, ICurrentDirection
public class MiniSandMole : SandMole
{
// Variables
#region Variables
// Components
[field: SerializeField]
public Rigidbody Rigidbody { get; private set; }
[field: SerializeField]
public CapsuleCollider CharacterCollider { get; private set; }
[field: SerializeField]
public BehaviorTree BehaviorTree { get; private set; }
[field: SerializeField]
public Transform VisualLook { get; private set; }
[field: SerializeField]
public SpriteRenderer SpriteRenderer { get; private set; }
[field: SerializeField]
public Animator Animator { get; private set; }
[field: SerializeField]
public BoxCollider HitBoxCollider { get; private set; }
// Classes
[field: SerializeField, Required]
public BossData BossData { get; private set; }
[field: SerializeField, Required]
public AnimationController AnimationController { get; private set; }
[field: SerializeField, Required]
public BossHealthPoint BossHealthPoint { get; private set; }
[field: SerializeField, Required]
public BossSkillController BossSkillController { get; private set; }
[field: SerializeField, Required]
public SandMoleStatus SandMoleStatus { get; private set; }
[field: SerializeField]
public Collider Target { get; private set; }
[Title("효과")]
[SerializeField]
private float _spawnDissolveTime = 2f;
[SerializeField]
private float _dieDissolveTime = 1f;
public BossMapController BossMapController { get; private set; }
private bool _isMoving;
public bool IsMoving
{
get => _isMoving;
set
{
_isMoving = value;
AnimationController.SetAnimationParameter("isMoving", _isMoving);
}
}
private Vector3 _currentDirection = Vector3.right;
public Vector3 CurrentDirection
{
get => _currentDirection;
set
{
if (value == Vector3.zero) return;
_currentDirection = value;
AnimationController.SetAnimationParameter("xDirection", _currentDirection.x);
AnimationController.SetAnimationParameter("zDirection", _currentDirection.z);
}
}
//[SerializeField]
//private float _dieDissolveTime = 1f;
// Hashes
private static readonly int _dissolveValueHash = Shader.PropertyToID("_DissolveValue");
#endregion
// Unity events
#region Unity events
private void Awake()
{
InitializeComponents();
}
private void Update()
{
FlipVisualLook();
}
#endregion
// Initialize methods
#region Initialize methods
[Button("컴포넌트 초기화")]
private void InitializeComponents()
public override async void Initialize()
{
Rigidbody = GetComponent<Rigidbody>();
CharacterCollider = GetComponent<CapsuleCollider>();
BehaviorTree = GetComponent<BehaviorTree>();
VisualLook = transform.Find("VisualLook");
SpriteRenderer = VisualLook.GetComponent<SpriteRenderer>();
Animator = VisualLook.GetComponent<Animator>();
HitBoxCollider = transform.Find("HitBox").GetComponent<BoxCollider>();
AnimationController = GetComponent<AnimationController>();
BossHealthPoint = GetComponent<BossHealthPoint>();
BossSkillController = GetComponent<BossSkillController>();
SandMoleStatus = GetComponent<SandMoleStatus>();
BossMapController = MapManager.Instance.SandMoleMapController;
}
public void Initialize()
{
StartCoroutine(InitializeEffectCoroutine());
}
private IEnumerator InitializeEffectCoroutine()
{
Target = GameManager.Instance.CurrentCombatPlayer.GetComponent<Collider>();
BossHealthPoint.Initialize(false, BossData.MaxHealthPoint,
BossData.DisplayName, BossMapController.ParticleInstanceLocation);
BossHealthPoint.OnDead += HandleDie;
BossData.DisplayName, SandMoleMapController.ParticleInstanceLocation);
BossSkillController.Initialize(BossData.SkillDataList);
SpriteRenderer.material.SetFloat(_dissolveValueHash, 0f);
SetMoveSpeed(SandMoleData.MoveSpeed);
StopMove();
MeshRenderer.material.SetFloat(_dissolveValueHash, 0f);
var elapsedTime = 0f;
while (elapsedTime <= _spawnDissolveTime)
{
var value = Mathf.Lerp(0f, 1f, elapsedTime / _spawnDissolveTime);
SpriteRenderer.material.SetFloat(_dissolveValueHash, value);
MeshRenderer.material.SetFloat(_dissolveValueHash, value);
elapsedTime += Time.deltaTime;
yield return null;
await Awaitable.NextFrameAsync();
}
SpriteRenderer.material.SetFloat(_dissolveValueHash, 1f);
MeshRenderer.material.SetFloat(_dissolveValueHash, 1f);
SpineController.SetSkin(SandMoleSkin.Normal.ToString());
var roarTrack = SpineController.PlayAnimation(SandMoleAnimation.Roar.ToString(), false);
await SpineController.WaitForAnimationCompletion(roarTrack);
BehaviorTree.EnableBehavior();
}
@ -164,45 +53,25 @@ namespace BlueWater.Enemies.Bosses.SandMole
// Methods
#region Methods
private void HandleDie()
protected override async void Die()
{
StartCoroutine(DieCoroutine());
}
BossSkillController.StopAllCoroutine();
BehaviorTree.DisableBehavior();
StopMove();
private IEnumerator DieCoroutine()
{
HitBoxCollider.enabled = false;
if (Rigidbody)
{
Rigidbody.linearVelocity = Vector3.zero;
Rigidbody.isKinematic = true;
}
AnimationController.SetAnimationTrigger("isDead");
SpineController.SetSkin(SandMoleSkin.Idle.ToString());
var dieTrack = SpineController.PlayAnimation(SandMoleAnimation.Die.ToString(), false);
SpriteRenderer.material.SetFloat(_dissolveValueHash, 0f);
var elapsedTime = 0f;
while (elapsedTime <= _dieDissolveTime)
{
var value = Mathf.Lerp(1f, 0f, elapsedTime / _dieDissolveTime);
SpriteRenderer.material.SetFloat(_dissolveValueHash, value);
elapsedTime += Time.deltaTime;
yield return null;
}
SpriteRenderer.material.SetFloat(_dissolveValueHash, 0f);
await SpineController.WaitForAnimationCompletion(dieTrack);
Destroy(gameObject);
}
private void FlipVisualLook()
{
var localScale = VisualLook.localScale;
localScale.x = CurrentDirection.x switch
{
> 0.01f => Mathf.Abs(localScale.x),
< -0.01f => -Mathf.Abs(localScale.x),
_ => localScale.x
};
VisualLook.localScale = localScale;
}
#endregion
}

View File

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using BlueWater.Interfaces;
using System.Collections.Generic;
using System.Linq;
using BlueWater.Items;
using BlueWater.Maps;
using Sirenix.OdinInspector;
@ -17,54 +16,39 @@ namespace BlueWater.Enemies.Bosses.SandMole
SpikeBarrage
}
[Serializable]
public class SummonMiniSandMole
public enum SandMoleSkin
{
[field: SerializeField]
public float HealthPercentage { get; private set; }
[field: SerializeField]
public bool SummonTrigger { get; set; }
Idle = 0,
Normal,
Spin
}
public enum SandMoleAnimation
{
None = 0,
Die,
Dig,
Idle,
Roar,
Spin,
SpinReady,
SpinReady2,
Stun
}
public class SandMole : Boss, ICurrentDirection
public class SandMole : SpineBoss
{
// Variables
#region Variables
[field: Title("SandMole 컴포넌트")]
[field: SerializeField, Required]
public SandMoleStatus SandMoleStatus { get; private set; }
[SerializeField]
private List<SummonMiniSandMole> _summonMiniSandMoles;
private List<SummonMiniSandMole> _summonMiniSandMoles;
public SandMoleData SandMoleData { get; private set; }
public SandMoleMapController SandMoleMapController { get; private set; }
private bool _isMoving;
public bool IsMoving
{
get => _isMoving;
set
{
_isMoving = value;
AnimationController.SetAnimationParameter("isMoving", _isMoving);
}
}
private Vector3 _currentDirection = Vector3.right;
public Vector3 CurrentDirection
{
get => _currentDirection;
set
{
if (value == Vector3.zero) return;
_currentDirection = value;
AnimationController.SetAnimationParameter("xDirection", _currentDirection.x);
AnimationController.SetAnimationParameter("zDirection", _currentDirection.z);
}
}
#endregion
@ -97,10 +81,14 @@ namespace BlueWater.Enemies.Bosses.SandMole
SandMoleStatus = GetComponent<SandMoleStatus>();
SandMoleData = BossData as SandMoleData;
if (SandMoleData != null)
{
_summonMiniSandMoles = SandMoleData.SummonMiniSandMoles.ConvertAll(mole => new SummonMiniSandMole(mole));
}
SandMoleMapController = MapManager.Instance.SandMoleMapController;
}
public override void Initialize()
public override async void Initialize()
{
BossHealthPoint.Initialize(true, SandMoleData.MaxHealthPoint,
SandMoleData.DisplayName, SandMoleMapController.ParticleInstanceLocation);
@ -108,6 +96,11 @@ namespace BlueWater.Enemies.Bosses.SandMole
BossSkillController.Initialize(BossData.SkillDataList);
SetMoveSpeed(SandMoleData.MoveSpeed);
StopMove();
SpineController.SetSkin(SandMoleSkin.Normal.ToString());
var roarTrack = SpineController.PlayAnimation(SandMoleAnimation.Roar.ToString(), false);
await SpineController.WaitForAnimationCompletion(roarTrack);
BehaviorTree.EnableBehavior();
}
@ -116,24 +109,34 @@ namespace BlueWater.Enemies.Bosses.SandMole
// Methods
#region Methods
protected override void HandleDie()
protected override async void Die()
{
BossSkillController.StopAllCoroutine();
BehaviorTree.DisableBehavior();
StopMove();
HitBoxCollider.enabled = false;
if (Rigidbody)
{
Rigidbody.linearVelocity = Vector3.zero;
Rigidbody.isKinematic = true;
}
AnimationController.SetAnimationTrigger("isDead");
ItemManager.Instance.ItemDropRandomPosition(BossData.CharacterIdx, transform.position);
SpineController.SetSkin(SandMoleSkin.Idle.ToString());
var dieTrack = SpineController.PlayAnimation(SandMoleAnimation.Die.ToString(), false);
SandMoleMapController.ClearMap();
await SpineController.WaitForAnimationCompletion(dieTrack);
ItemManager.Instance.ItemDropRandomPosition(BossData.CharacterIdx, transform.position);
Destroy(gameObject);
}
private void SummonMiniSandMole(int currentHp)
{
if (currentHp == 0) return;
var currentHealthPercentage = (float)currentHp / BossData.MaxHealthPoint * 100f;
foreach (var element in _summonMiniSandMoles)
{
if (currentHealthPercentage > element.HealthPercentage || element.SummonTrigger) continue;
@ -142,30 +145,6 @@ namespace BlueWater.Enemies.Bosses.SandMole
element.SummonTrigger = true;
}
}
private void FlipVisualLook()
{
var localScale = VisualLook.localScale;
localScale.x = CurrentDirection.x switch
{
> 0.01f => Mathf.Abs(localScale.x),
< -0.01f => -Mathf.Abs(localScale.x),
_ => localScale.x
};
VisualLook.localScale = localScale;
}
private void HandleMovement()
{
if (!IAstarAi.canMove || IAstarAi.isStopped)
{
IsMoving = false;
return;
}
CurrentDirection = IAstarAi.velocity.normalized;
IsMoving = IAstarAi.velocity != Vector3.zero || IAstarAi.velocity != Vector3.positiveInfinity;
}
#endregion
}

View File

@ -1,4 +1,5 @@
using UnityEngine;
using System.Collections.Generic;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole
{
@ -7,5 +8,8 @@ namespace BlueWater.Enemies.Bosses.SandMole
{
[field: SerializeField]
public float MoveSpeed { get; private set; } = 3f;
[field: SerializeField]
public List<SummonMiniSandMole> SummonMiniSandMoles { get; private set; }
}
}

View File

@ -1,4 +1,6 @@
using System;
using BlueWater.Interfaces;
using BlueWater.Players;
using BlueWater.Utility;
using Sirenix.OdinInspector;
using UnityEngine;
@ -9,6 +11,9 @@ namespace BlueWater.Enemies.Bosses.SandMole
{
// Variables
#region Variables
[SerializeField]
private SpineController _spineController;
// Stun
[Title("기절 효과")]
@ -21,7 +26,18 @@ namespace BlueWater.Enemies.Bosses.SandMole
private Coroutine _stunCoolDownCoroutine;
#endregion
private void Awake()
{
InitializeComponents();
}
[Button("컴포넌트 초기화")]
private void InitializeComponents()
{
_spineController = GetComponent<SpineController>();
}
// Stun
public bool CanStun() => IsStunEnabled;
@ -29,6 +45,8 @@ namespace BlueWater.Enemies.Bosses.SandMole
{
if (!CanStun()) return;
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Stun.ToString(), false);
IsStunned = true;
if (_stunParticle)
{
@ -40,6 +58,9 @@ namespace BlueWater.Enemies.Bosses.SandMole
public void EndStun()
{
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), false);
Utils.EndUniqueCoroutine(this, ref _stunCoolDownCoroutine);
_stunParticle.Stop();
_stunParticle.Clear();

View File

@ -0,0 +1,21 @@
using System;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole
{
[Serializable]
public class SummonMiniSandMole
{
[field: SerializeField]
public float HealthPercentage { get; private set; }
[field: SerializeField]
public bool SummonTrigger { get; set; }
public SummonMiniSandMole(SummonMiniSandMole summonMiniSandMole)
{
HealthPercentage = summonMiniSandMole.HealthPercentage;
SummonTrigger = summonMiniSandMole.SummonTrigger;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 12827405845b15247b5415e44cd8a33c

View File

@ -0,0 +1,94 @@
using BlueWater.Interfaces;
using BlueWater.Players;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses
{
public abstract class SpineBoss : Boss, ICurrentDirection
{
// Variables
#region Variables
// Components
[field: Title("스파인 보스 컴포넌트")]
[field: SerializeField]
public MeshRenderer MeshRenderer { get; private set; }
// Classes
[field: SerializeField]
public SpineController SpineController { get; private set; }
public bool IsMoving { get; private set; }
private Vector3 _currentDirection = Vector3.right;
public Vector3 CurrentDirection
{
get => _currentDirection;
set
{
if (value == Vector3.zero) return;
_currentDirection = value;
}
}
#endregion
// Unity events
#region Unity events
protected override void Update()
{
base.Update();
HandleMovement();
FlipVisualLook();
}
#endregion
// Initialize methods
#region Initialize methods
[Button("컴포넌트 초기화")]
protected override void InitializeComponents()
{
base.InitializeComponents();
MeshRenderer = VisualLook.GetComponent<MeshRenderer>();
SpineController = GetComponent<SpineController>();
}
#endregion
// Methods
#region Methods
protected virtual void FlipVisualLook()
{
var localScale = VisualLook.localScale;
localScale.x = CurrentDirection.x switch
{
> 0.01f => -Mathf.Abs(localScale.x),
< -0.01f => Mathf.Abs(localScale.x),
_ => localScale.x
};
VisualLook.localScale = localScale;
}
protected virtual void HandleMovement()
{
if (!AstarAi.canMove || AstarAi.isStopped)
{
IsMoving = false;
return;
}
CurrentDirection = AstarAi.velocity.normalized;
IsMoving = AstarAi.velocity != Vector3.zero || AstarAi.velocity != Vector3.positiveInfinity;
}
#endregion
}
}

View File

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1db8f02f97227534c8bc86e6ac990caf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences:
- _aiMovement: {fileID: 11400000, guid: 5d32cc099076ade42ab5744c9bb621bb, type: 2}
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,19 +1,23 @@
using BlueWater.Items;
using BlueWater.Maps;
using BlueWater.Uis;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.TitanSlime
{
public class TitanSlime : Boss
public class TitanSlime : AnimatorBoss
{
// Variables
#region Variables
[Title("TitanSlime 컴포넌트")]
[SerializeField]
private SpriteRenderer _rabbit;
public TitanSlimeData TitanSlimeData { get; private set; }
[field: SerializeField]
public TitanSlimeState TitanSlimeState { get; private set; }
private TitanSlimeMapController _titanSlimeMapController;
@ -56,17 +60,17 @@ namespace BlueWater.Enemies.Bosses.TitanSlime
// Methods
#region Methods
protected override void HandleDie()
protected override void Die()
{
BossSkillController.StopAllCoroutine();
BehaviorTree.DisableBehavior();
HitBoxCollider.enabled = false;
if (Rigidbody)
{
Rigidbody.linearVelocity = Vector3.zero;
Rigidbody.isKinematic = true;
}
if (TitanSlimeState.HasRabbit)
{
CombatUiManager.Instance.FieldBossHealthPointUi.SetActiveHpSlider(false);
}
if (TitanSlimeState.Level == 4 && TitanSlimeState.HasRabbit)
{

View File

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using BlueWater.Interfaces;
using BlueWater.Maps;
using BlueWater.Uis;
using BlueWater.Utility;
using Sirenix.OdinInspector;
@ -173,6 +174,14 @@ namespace BlueWater.Players.Combat
}
}
public void OnForceKillBoss(InputAction.CallbackContext context)
{
if (context.performed)
{
MapManager.Instance.ForceKillCurrentBoss();
}
}
public void OnCancel(InputAction.CallbackContext context)
{
if (context.performed)

View File

@ -172,6 +172,9 @@ namespace BlueWater.Players.Combat
CombatUiManager.Instance.GameOverPopupUi.Open(CombatUiManager.Instance.PopupUiList);
}
public void SetCurrentHealthPoint(int value) => PlayerHealthPoint.SetCurrentHealthPoint(value);
public void SetCurrentHealthPointMax() => PlayerHealthPoint.SetCurrentHealthPoint(PlayerHealthPoint.MaxHealthPoint);
#endregion
}
}

View File

@ -1,6 +1,7 @@
using System;
using System.Collections;
using Sirenix.OdinInspector;
using Spine;
using Spine.Unity;
using UnityEngine;
using AnimationState = Spine.AnimationState;
@ -48,18 +49,30 @@ namespace BlueWater.Players
// Methods
#region Methods
public void PlayAnimation(string animationName, bool isLoopActive, float speed = 1f)
/// <param name="animationName">스파인 애니메이션 이름</param>
/// <param name="isLoopActive">반복 여부</param>
/// <param name="speed">애니메이션 속도 양수값</param>
/// <param name="isReverse">true인 경우 자동으로 speed에 음수값을 넣음</param>
/// <returns></returns>
public TrackEntry PlayAnimation(string animationName, bool isLoopActive, float speed = 1f, bool isReverse = false)
{
if (!_skeletonAnimation && _animationState == null) return;
if (!_skeletonAnimation || _animationState == null) return null;
if (string.IsNullOrEmpty(animationName))
{
Debug.LogError($"{animationName}의 애니메이션은 존재하지 않습니다.");
return;
return null;
}
_animationState.TimeScale = speed;
_animationState.SetAnimation(0, animationName, isLoopActive);
_animationState.TimeScale = isReverse ? -Mathf.Abs(speed) : Mathf.Abs(speed);
var trackEntry = _animationState.SetAnimation(0, animationName, isLoopActive);
if (isReverse)
{
trackEntry.TrackTime = trackEntry.AnimationEnd;
}
return trackEntry;
}
public void SetSkin(string skinName)
@ -77,68 +90,24 @@ namespace BlueWater.Players
_animationState.Apply(_skeletonAnimation.Skeleton);
}
public bool IsComparingCurrentAnimation(string animationName, int trackIndex = 0)
public async Awaitable WaitForAnimationCompletion(TrackEntry trackEntry, bool isReverse = false)
{
if (!_skeletonAnimation || _animationState == null) return false;
var currentAnimation = _animationState.GetCurrent(trackIndex)?.Animation;
return currentAnimation != null && currentAnimation.Name == animationName;
if (isReverse)
{
await AwaitUntil(() => trackEntry.TrackTime <= 0);
}
else
{
await AwaitUntil(() => trackEntry.IsComplete);
}
}
public IEnumerator WaitForAnimationToRun(string animationName, Action<bool> onSuccess, float timeout = 2f)
public async Awaitable AwaitUntil(Func<bool> condition)
{
var elapsedTime = 0f;
while (!IsComparingCurrentAnimation(animationName))
while (!condition())
{
elapsedTime += Time.deltaTime;
yield return null;
if (elapsedTime > timeout)
{
Debug.Log("Timeout waiting for animation state: " + animationName);
onSuccess?.Invoke(false);
yield break;
}
await Awaitable.NextFrameAsync();
}
onSuccess?.Invoke(true);
}
public void SetCurrentAnimationSpeed(float targetDuration, int trackIndex = 0)
{
if (!_skeletonAnimation || _animationState == null) return;
var currentAnimation = _animationState.GetCurrent(trackIndex)?.Animation;
if (currentAnimation != null)
{
var animationLength = currentAnimation.Duration;
_animationState.TimeScale = animationLength / targetDuration;
}
}
public float GetCurrentAnimationNormalizedTime(int trackIndex = 0)
{
if (!_skeletonAnimation || _animationState == null) return 0f;
var currentTrackEntry = _animationState.GetCurrent(trackIndex);
if (currentTrackEntry != null)
{
return currentTrackEntry.TrackTime / currentTrackEntry.Animation.Duration;
}
return 0f;
}
public float GetCurrentAnimationLength(int trackIndex = 0)
{
if (!_skeletonAnimation || _animationState == null) return 0f;
var currentAnimation = _animationState.GetCurrent(trackIndex)?.Animation;
return currentAnimation != null ? currentAnimation.Duration : 0f;
}
public void ResetAnimationSpeed()
{
if (!_skeletonAnimation || _animationState == null) return;
_animationState.TimeScale = 1f;
}
#endregion

View File

@ -129,7 +129,7 @@ namespace BlueWater.Maps
elapsedTime += Time.unscaledDeltaTime;
yield return null;
}
DestroyAllEnemies();
DestroyAllEnemiesExceptBoss();
VisualFeedbackManager.Instance.SetBaseTimeScale(1f);
elapsedTime = 0f;

View File

@ -63,23 +63,14 @@ namespace BlueWater.Maps
private IEnumerator BossMapTriggerCoroutine()
{
var interactionAnimationName = BossMapTriggerAnimation.Animation.ToString();
_spineController.PlayAnimation(interactionAnimationName, false);
var animationStarted = false;
yield return StartCoroutine(_spineController.WaitForAnimationToRun(interactionAnimationName,
success => animationStarted = success));
if (!animationStarted)
var animationTrack = _spineController.PlayAnimation( BossMapTriggerAnimation.Animation.ToString(), false);
if (animationTrack == null)
{
Debug.LogError("BossMapTriggerCoroutine animationTrack is null error");
yield break;
}
while (_spineController.IsComparingCurrentAnimation(interactionAnimationName)
&& _spineController.GetCurrentAnimationNormalizedTime() <= 1f)
{
yield return null;
}
yield return new WaitUntil(() => animationTrack.IsComplete);
gameObject.SetActive(false);
OnInteractionActive?.Invoke();

View File

@ -1,4 +1,5 @@
using System.Collections.Generic;
using BlueWater.Enemies.Bosses;
using Sirenix.OdinInspector;
using UnityEngine;
@ -92,8 +93,31 @@ namespace BlueWater.Maps
public void DestroyAllEnemies()
{
var temps = new List<Transform>();
foreach (Transform element in EnemyInstanceLocation)
{
temps.Add(element);
}
foreach (var element in temps)
{
Destroy(element.gameObject);
}
}
public void DestroyAllEnemiesExceptBoss()
{
var temps = new List<Transform>();
foreach (Transform element in EnemyInstanceLocation)
{
temps.Add(element);
}
foreach (var element in temps)
{
var boss = element.GetComponent<Boss>();
if (boss) continue;
Destroy(element.gameObject);
}
}
@ -101,13 +125,36 @@ namespace BlueWater.Maps
public void DestroyAllObjects()
{
DestroyAllEnemies();
var temps = new List<Transform>();
foreach (Transform element in ParticleInstanceLocation)
{
temps.Add(element);
}
foreach (Transform element in temps)
{
Destroy(element.gameObject);
}
}
public void ForceKillBoss()
{
var temps = new List<Transform>();
foreach (Transform element in EnemyInstanceLocation)
{
temps.Add(element);
}
foreach (Transform element in temps)
{
var boss = element.GetComponent<Boss>();
if (!boss) continue;
boss.ForceKillBoss();
}
}
public void MovePlayer()
{
if (!GameManager.Instance.CurrentCombatPlayer) return;

View File

@ -70,9 +70,9 @@ namespace BlueWater.Maps
AudioManager.Instance.StopBgm();
}
public void CurrentMapRestart()
public void RestartCurrentMap()
{
if (_currentMapController != null)
if (_currentMapController)
{
_currentMapController.ResetMap();
}
@ -83,7 +83,7 @@ namespace BlueWater.Maps
public void MoveSelectStage(int stage)
{
_currentMapController = GetMapController(DataManager.Instance.CurrentSaveStage);
if (_currentMapController != null)
if (_currentMapController)
{
_currentMapController.ResetMap();
}
@ -92,5 +92,15 @@ namespace BlueWater.Maps
var moveMapController = GetMapController((SaveStage)stage);
moveMapController.MovePlayer();
}
public void ForceKillCurrentBoss()
{
_currentMapController = GetMapController(DataManager.Instance.CurrentSaveStage);
if (!_currentMapController)
{
return;
}
_currentMapController.ForceKillBoss();
}
}
}

View File

@ -766,18 +766,27 @@
"initialStateCheck": false
},
{
"name": "OpenMenu",
"name": "OpenDevelopMenu",
"type": "Button",
"id": "d7467711-57a8-4a31-a2ba-d14040cff3e7",
"id": "a5d9ffcb-5c4f-4c6d-8335-9060bbea120a",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "OpenDevelopMenu",
"name": "ForceKillBoss",
"type": "Button",
"id": "a5d9ffcb-5c4f-4c6d-8335-9060bbea120a",
"id": "2f6cc7b3-e806-4b78-b11f-e6ed70bb67ac",
"expectedControlType": "",
"processors": "",
"interactions": "",
"initialStateCheck": false
},
{
"name": "OpenMenu",
"type": "Button",
"id": "d7467711-57a8-4a31-a2ba-d14040cff3e7",
"expectedControlType": "",
"processors": "",
"interactions": "",
@ -926,6 +935,17 @@
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "5768b250-8724-4c7e-a3d1-784ebd316854",
"path": "<Keyboard>/f2",
"interactions": "",
"processors": "",
"groups": ";Keyboard&Mouse",
"action": "ForceKillBoss",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "46591849-5c1e-4b83-b490-0a4ad29ed80f",

View File

@ -18,6 +18,6 @@ MonoBehaviour:
- <BossType>k__BackingField: 2
<Prefab>k__BackingField: {fileID: 4623786526972472839, guid: b3fede52cd9ea854fab2ad603b53dd77, type: 3}
- <BossType>k__BackingField: 3
<Prefab>k__BackingField: {fileID: 4623786526972472839, guid: e3a389dac3e524844ac42dabd7207e64, type: 3}
<Prefab>k__BackingField: {fileID: 3920647224749190631, guid: 58854203209bd294d817b319d4dafc4f, type: 3}
- <BossType>k__BackingField: 4
<Prefab>k__BackingField: {fileID: 811732657406064749, guid: 5975a5a7434cc704c9d60c8ab3750550, type: 3}
<Prefab>k__BackingField: {fileID: 3920647224749190631, guid: 95f91f8d7fca3544fb0577a9dd14caf6, type: 3}

View File

@ -25,3 +25,12 @@ MonoBehaviour:
- {fileID: -8817476587284398613, guid: 1ac17d81b98c9fb488ac24d8e2291955, type: 3}
- {fileID: 6831508064570746451, guid: 4c632b5316acd35479cf545bc4752b7f, type: 3}
<MoveSpeed>k__BackingField: 3
<SummonMiniSandMoles>k__BackingField:
- <HealthPercentage>k__BackingField: 80
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 60
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 40
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 20
<SummonTrigger>k__BackingField: 0

View File

@ -408,7 +408,7 @@ MonoBehaviour:
<Weight>k__BackingField: 0
<Description>k__BackingField:
<Sprite>k__BackingField: {fileID: 21300000, guid: 8de91ee4e8525bb46bb309c15c5207d3, type: 3}
<ItemPrefab>k__BackingField: {fileID: 8962896418303621511, guid: 0dc7ed0facf2fca4b80244d0d95e2557, type: 3}
<ItemPrefab>k__BackingField: {fileID: 8962896418303621511, guid: 66d94bc59db241a4895f8e4fff7ea201, type: 3}
- <Idx>k__BackingField: 50002
<Name>k__BackingField: "\uD558\uD2B8 \uD55C \uAC1C"
<Category>k__BackingField: 5
@ -417,4 +417,4 @@ MonoBehaviour:
<Weight>k__BackingField: 0
<Description>k__BackingField:
<Sprite>k__BackingField: {fileID: 21300000, guid: 4e2159443b5aedf43849ec062f4f8016, type: 3}
<ItemPrefab>k__BackingField: {fileID: 8962896418303621511, guid: 66d94bc59db241a4895f8e4fff7ea201, type: 3}
<ItemPrefab>k__BackingField: {fileID: 8962896418303621511, guid: 0dc7ed0facf2fca4b80244d0d95e2557, type: 3}

View File

@ -2,7 +2,9 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using BlueWater.Interfaces;
using BlueWater.Maps;
using BlueWater.Players;
using BlueWater.Utility;
using UnityEngine;
using Random = UnityEngine.Random;
@ -12,25 +14,22 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
public class GateOfSpikes : BaseSkill
{
private GateOfSpikesData _gateOfSpikesData;
private SandMole _sandMole;
private AnimationController _animationController;
private SpineController _spineController;
private Collider _userCollider;
private Collider _targetCollider;
private ICurrentDirection _currentDirection;
private Transform _particleInstantiateLocation;
private List<Vector3> _spikes;
protected override void BasicSetting()
{
if (!_sandMole)
{
_sandMole = SkillUser.GetComponent<SandMole>();
_animationController = _sandMole.AnimationController;
_userCollider = _sandMole.CharacterCollider;
_targetCollider = _sandMole.Target;
_particleInstantiateLocation = MapManager.Instance.SandMoleMapController.ParticleInstanceLocation;
}
_gateOfSpikesData = (GateOfSpikesData)SkillData;
_spineController = SkillUser.GetComponent<SpineController>();
_userCollider = SkillUser.GetComponent<CapsuleCollider>();
_targetCollider = SkillUser.GetComponent<ITarget>().Target;
_currentDirection = SkillUser.GetComponent<ICurrentDirection>();
_particleInstantiateLocation = MapManager.Instance.SandMoleMapController.ParticleInstanceLocation;
_spikes = new List<Vector3>(_gateOfSpikesData.SpikeCount);
base.BasicSetting();
@ -44,27 +43,26 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private IEnumerator SkillCoroutine(params Action[] actions)
{
EnableSkill = false;
_sandMole.StopMove();
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.GateOfSpikes);
var animationStarted = false;
yield return StartCoroutine(_animationController.WaitForAnimationToRun("GateOfSpikes",
success => animationStarted = success));
if (!animationStarted || !SkillUser || !_userCollider)
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
var roarTrack = _spineController.PlayAnimation(SandMoleAnimation.Roar.ToString(), false);
if (roarTrack == null)
{
EndSkill(0, actions[0]);
yield break;
}
yield return new WaitUntil(() => roarTrack.IsComplete);
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), true);
IsUsingSkill = true;
_animationController.ResetAnimationSpeed();
var startPosition = SkillUser.transform.position;
var targetCenterPosition = _targetCollider.transform.position;
startPosition.y = targetCenterPosition.y;
var targetVector = targetCenterPosition - startPosition;
var targetDirection = targetVector.normalized;
_sandMole.CurrentDirection = targetDirection;
_currentDirection.CurrentDirection = targetDirection;
var spikeSpawnPosition = _userCollider.bounds.center;
var validAttackPositions = new List<Vector3>();
@ -97,7 +95,8 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
{
Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance);
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None);
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), true);
action?.Invoke();
Utils.StartUniqueCoroutine(this, ref CooldownCoroutineInstance,Utils.CoolDownCoroutine(cooldown, EndCooldown));

View File

@ -1,6 +1,8 @@
using System;
using System.Collections;
using BlueWater.Interfaces;
using BlueWater.Maps;
using BlueWater.Players;
using BlueWater.Utility;
using UnityEngine;
@ -9,21 +11,18 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
public class MultiThrowSpikes : BaseSkill
{
private MultiThrowSpikesData _multiThrowSpikesData;
private SandMole _sandMole;
private AnimationController _animationController;
private SpineController _spineController;
private Collider _targetCollider;
private ICurrentDirection _currentDirection;
private Transform _particleInstantiateLocation;
protected override void BasicSetting()
{
if (!_sandMole)
{
_sandMole = SkillUser.GetComponent<SandMole>();
_animationController = _sandMole.AnimationController;
_targetCollider = _sandMole.Target;
_particleInstantiateLocation = MapManager.Instance.SandMoleMapController.ParticleInstanceLocation;
}
_multiThrowSpikesData = (MultiThrowSpikesData)SkillData;
_spineController = SkillUser.GetComponent<SpineController>();
_targetCollider = SkillUser.GetComponent<ITarget>().Target;
_currentDirection = SkillUser.GetComponent<ICurrentDirection>();
_particleInstantiateLocation = MapManager.Instance.SandMoleMapController.ParticleInstanceLocation;
base.BasicSetting();
}
@ -36,21 +35,25 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private IEnumerator SkillCoroutine(params Action[] actions)
{
EnableSkill = false;
_sandMole.StopMove();
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.MultiThrowSpikes);
_spineController.SetSkin(SandMoleSkin.Idle.ToString());
var spinReady2Track = _spineController.PlayAnimation(SandMoleAnimation.SpinReady2.ToString(), false);
if (spinReady2Track == null)
{
EndSkill(0, actions[0]);
yield break;
}
var animationStarted = false;
yield return StartCoroutine(_animationController.WaitForAnimationToRun("MultiThrowSpikes",
success => animationStarted = success));
if (!animationStarted || !SkillUser)
yield return new WaitUntil(() => spinReady2Track.IsComplete);
_spineController.SetSkin(SandMoleSkin.Spin.ToString());
var spinTrack = _spineController.PlayAnimation(SandMoleAnimation.Spin.ToString(), true);
if (spinTrack == null || !SkillUser)
{
EndSkill(0, actions[0]);
yield break;
}
IsUsingSkill = true;
_animationController.ResetAnimationSpeed();
var startPosition = SkillUser.transform.position;
var waitForSeconds = new WaitForSeconds(_multiThrowSpikesData.SpikeInterval);
for (var i = 0; i < _multiThrowSpikesData.SpikeCount; i++)
@ -65,7 +68,7 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
startPosition.y = targetCenterPosition.y;
var targetVector = targetCenterPosition - startPosition;
var targetDirection = targetVector.normalized;
_sandMole.CurrentDirection = targetDirection;
_currentDirection.CurrentDirection = targetDirection;
var rotation = Quaternion.LookRotation(targetDirection);
var projectile = Instantiate(_multiThrowSpikesData.SpikePrefab, startPosition, rotation,
_particleInstantiateLocation).GetComponent<ProjectileController>();
@ -82,7 +85,8 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
{
Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance);
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None);
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), true);
action?.Invoke();
Utils.StartUniqueCoroutine(this, ref CooldownCoroutineInstance,Utils.CoolDownCoroutine(cooldown, EndCooldown));

View File

@ -2,6 +2,7 @@ using System;
using System.Collections;
using BlueWater.Interfaces;
using BlueWater.Maps;
using BlueWater.Players;
using BlueWater.Utility;
using Sirenix.OdinInspector;
using UnityEngine;
@ -16,18 +17,18 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private bool _isDrawingGizmo = true;
private SingleRollData _singleRollData;
private AnimationController _animationController;
private SpineController _spineController;
private Rigidbody _userRigidbody;
private CapsuleCollider _userCollider;
private Collider _targetCollider;
private ICurrentDirection _iCurrentDirection;
private BossMapController _sandMoleMapController;
private Transform _particleInstantiateLocation;
private float _colliderRadius;
private float _attackRadius;
private void OnDrawGizmos()
{
if (!_isDrawingGizmo || !IsUsingSkill) return;
if (!_isDrawingGizmo || !IsUsingSkill || !SkillUser) return;
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(SkillUser.transform.position, _attackRadius);
@ -35,16 +36,16 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
protected override void BasicSetting()
{
_animationController = SkillUser.GetComponent<AnimationController>();
_singleRollData = (SingleRollData)SkillData;
_spineController = SkillUser.GetComponent<SpineController>();
_userRigidbody = SkillUser.GetComponent<Rigidbody>();
_userCollider = SkillUser.GetComponent<CapsuleCollider>();
_targetCollider = SkillUser.GetComponent<ITarget>().Target;
_sandMoleMapController = MapManager.Instance.SandMoleMapController;
_particleInstantiateLocation = MapManager.Instance.SandMoleMapController.ParticleInstanceLocation;
_iCurrentDirection = SkillUser.GetComponent<ICurrentDirection>();
_colliderRadius = _userCollider.radius * SkillUser.transform.localScale.x;
_attackRadius = _colliderRadius * 0.5f;
_singleRollData = (SingleRollData)SkillData;
HitColliders = new Collider[4];
base.BasicSetting();
@ -58,20 +59,25 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private IEnumerator SkillCoroutine(params Action[] actions)
{
EnableSkill = false;
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.SingleRoll);
_spineController.SetSkin(SandMoleSkin.Idle.ToString());
var spinReady2Track = _spineController.PlayAnimation(SandMoleAnimation.SpinReady2.ToString(), false);
if (spinReady2Track == null)
{
EndSkill(0, actions[0]);
yield break;
}
var animationStarted = false;
yield return StartCoroutine(_animationController.WaitForAnimationToRun("SingleRoll",
success => animationStarted = success));
if (!animationStarted || !SkillUser)
yield return new WaitUntil(() => spinReady2Track.IsComplete);
_spineController.SetSkin(SandMoleSkin.Spin.ToString());
var spinTrack = _spineController.PlayAnimation(SandMoleAnimation.Spin.ToString(), true);
if (spinTrack == null || !SkillUser)
{
EndSkill(0, actions[0]);
yield break;
}
IsUsingSkill = true;
_animationController.ResetAnimationSpeed();
var startPosition = SkillUser.transform.position;
var targetPosition = _targetCollider.transform.position;
targetPosition.y = startPosition.y;
@ -184,7 +190,7 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
+ -targetDirection * _singleRollData.RockfallInterval * i
+ Vector3.up * _singleRollData.RockfallSpawnHeight;
spawnPosition += Vector3.Cross(-targetDirection, Vector3.up).normalized * randomSide;
Instantiate(_singleRollData.RockfallPrefab, spawnPosition, Quaternion.identity, _sandMoleMapController.ParticleInstanceLocation);
Instantiate(_singleRollData.RockfallPrefab, spawnPosition, Quaternion.identity, _particleInstantiateLocation);
}
}
@ -201,7 +207,8 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
{
Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance);
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None);
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), true);
action?.Invoke();
IsUsingSkill = false;

View File

@ -2,6 +2,7 @@ using System;
using System.Collections;
using BlueWater.Interfaces;
using BlueWater.Maps;
using BlueWater.Players;
using BlueWater.Utility;
using UnityEngine;
@ -10,30 +11,28 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
public class SpikeBarrage : BaseSkill
{
private SpikeBarrageData _spikeBarrageData;
private AnimationController _animationController;
private SpineController _spineController;
private AiMovement _aiMovement;
private Rigidbody _userRigidbody;
private Collider _userCollider;
private CapsuleCollider _userCollider;
private BoxCollider _userHitBox;
private Collider _targetCollider;
private SpriteRenderer _userSpriteRenderer;
private SandMoleMapController _sandMoleMapController;
private Transform _particleInstantiateLocation;
private Transform _centerSpawnTransform;
private static readonly int _dissolveValueHash = Shader.PropertyToID("_DissolveValue");
protected override void BasicSetting()
{
_animationController = SkillUser.GetComponent<AnimationController>();
_spikeBarrageData = (SpikeBarrageData)SkillData;
_spineController = SkillUser.GetComponent<SpineController>();
_aiMovement = SkillUser.GetComponent<AiMovement>();
_userRigidbody = SkillUser.GetComponent<Rigidbody>();
_userCollider = SkillUser.GetComponent<CapsuleCollider>();
_userHitBox = SkillUser.GetComponentInChildren<BoxCollider>();
_targetCollider = SkillUser.GetComponent<ITarget>().Target;
_userSpriteRenderer = SkillUser.GetComponentInChildren<SpriteRenderer>();
_sandMoleMapController = MapManager.Instance.SandMoleMapController;
_particleInstantiateLocation = _sandMoleMapController.ParticleInstanceLocation;
_centerSpawnTransform = _sandMoleMapController.CenterSpawnTransform;
_spikeBarrageData = (SpikeBarrageData)SkillData;
base.BasicSetting();
}
@ -46,62 +45,48 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private IEnumerator SkillCoroutine(params Action[] actions)
{
EnableSkill = false;
_aiMovement.StopMove();
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.SpikeBarrage);
var animationStarted = false;
yield return StartCoroutine(_animationController.WaitForAnimationToRun("SpikeBarrage",
success => animationStarted = success));
if (!animationStarted || !SkillUser)
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
var digTrack = _spineController.PlayAnimation(SandMoleAnimation.Dig.ToString(), false);
if (digTrack == null || !SkillUser)
{
EndSkill(0, actions[0]);
yield break;
}
yield return new WaitUntil(() => digTrack.IsComplete);
_userRigidbody.isKinematic = true;
_userSpriteRenderer.material.SetFloat(_dissolveValueHash, 1f);
var elapsedTime = 0f;
var dissolveTime = _spikeBarrageData.DissolveTime;
while (elapsedTime <= dissolveTime)
{
if (!_userSpriteRenderer)
{
EndSkill(0, actions[0]);
yield break;
}
var value = Mathf.Lerp(1f, 0f, elapsedTime / dissolveTime);
_userSpriteRenderer.material.SetFloat(_dissolveValueHash, value);
elapsedTime += Time.deltaTime;
yield return null;
}
_userSpriteRenderer.material.SetFloat(_dissolveValueHash, 0f);
_aiMovement.Teleport(SkillUser.transform.position + Vector3.up * 20f);
_userHitBox.enabled = false;
_aiMovement.Teleport(_centerSpawnTransform.position);
yield return new WaitForSeconds(1f);
_aiMovement.Teleport(_centerSpawnTransform.position);
_userRigidbody.isKinematic = false;
elapsedTime = 0f;
dissolveTime = _spikeBarrageData.SpawnDissolveTime;
while (elapsedTime <= dissolveTime)
_userHitBox.enabled = true;
var reverseDigTrack = _spineController.PlayAnimation(SandMoleAnimation.Dig.ToString(), false, 1f, true);
if (reverseDigTrack == null || !SkillUser)
{
if (!_userSpriteRenderer)
{
EndSkill(0, actions[0]);
yield break;
}
var value = Mathf.Lerp(0f, 1f, elapsedTime / dissolveTime);
_userSpriteRenderer.material.SetFloat(_dissolveValueHash, value);
elapsedTime += Time.deltaTime;
yield return null;
EndSkill(0, actions[0]);
yield break;
}
yield return new WaitUntil(() => reverseDigTrack.TrackTime <= 0f);
_spineController.SetSkin(SandMoleSkin.Idle.ToString());
var spinReady2Track = _spineController.PlayAnimation(SandMoleAnimation.SpinReady2.ToString(), false);
if (spinReady2Track == null)
{
EndSkill(0, actions[0]);
yield break;
}
yield return new WaitUntil(() => spinReady2Track.IsComplete);
_spineController.SetSkin(SandMoleSkin.Spin.ToString());
var spinTrack = _spineController.PlayAnimation(SandMoleAnimation.Spin.ToString(), true);
if (spinTrack == null || !SkillUser)
{
EndSkill(0, actions[0]);
yield break;
}
_userSpriteRenderer.material.SetFloat(_dissolveValueHash, 1f);
var startAngle = _spikeBarrageData.StartAngle;
var angleStep = _spikeBarrageData.AngleStep;
@ -127,8 +112,8 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
{
Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance);
_animationController.ResetAnimationSpeed();
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None);
_spineController.SetSkin(SandMoleSkin.Normal.ToString());
_spineController.PlayAnimation(SandMoleAnimation.Idle.ToString(), true);
action?.Invoke();
Utils.StartUniqueCoroutine(this, ref CooldownCoroutineInstance,Utils.CoolDownCoroutine(cooldown, EndCooldown));

View File

@ -163,7 +163,7 @@ namespace BlueWater.Uis
public void RestartCurrentStage()
{
MapManager.Instance.CurrentMapRestart();
MapManager.Instance.RestartCurrentMap();
CloseAllPopup();
}

View File

@ -1,4 +1,3 @@
using System;
using System.Collections;
using Sirenix.OdinInspector;
using TMPro;
@ -21,6 +20,9 @@ namespace BlueWater.Uis
[SerializeField]
private float _duration = 1f;
private Coroutine _damageEffectCoroutineInstance;
private bool _isInitialized;
[Button("컴포넌트 초기화")]
private void InitializeComponents()
{
@ -37,6 +39,12 @@ namespace BlueWater.Uis
public void SetBoss(int maxHp, string bossName)
{
if (!_slider || !_damageEffectSlider) return;
if (_damageEffectCoroutineInstance != null)
{
StopCoroutine(_damageEffectCoroutineInstance);
_damageEffectCoroutineInstance = null;
}
_slider.maxValue = maxHp;
_damageEffectSlider.maxValue = maxHp;
@ -53,7 +61,7 @@ namespace BlueWater.Uis
{
if (!_slider || !_damageEffectSlider) return;
StartCoroutine(DamageEffect(value));
_damageEffectCoroutineInstance = StartCoroutine(DamageEffect(value));
}
private IEnumerator DamageEffect(int value)
@ -70,6 +78,11 @@ namespace BlueWater.Uis
}
_damageEffectSlider.value = value;
if (_damageEffectSlider.value == 0)
{
SetActiveHpSlider(false);
}
}
public void SetActiveHpSlider(bool value) => gameObject.SetActive(value);

View File

@ -46,8 +46,8 @@ TextureImporter:
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 7
spritePivot: {x: 0.5, y: 0.5}
alignment: 9
spritePivot: {x: 0.5, y: 0.01}
spritePixelsToUnits: 2048
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
@ -127,7 +127,7 @@ TextureImporter:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
internalID: 1537655665
vertices: []
indices:
edges: []

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,141 @@
fileFormatVersion: 2
guid: 27e9d61a31b61aa40ad14805e0c184eb
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 9
spritePivot: {x: 0.5, y: 0.03}
spritePixelsToUnits: 512
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: WindowsStoreApps
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 1537655665
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9ff2aa70261325646b659974e9b6323c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,146 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SandMole
m_Shader: {fileID: -6465566751694194690, guid: 25b64c74397178e47a04794eb9a74d8f, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 3c44ede4067bf47479030196a1fc61ec, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaClipThreshold: 0.2
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DissolveValue: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _GlowSize: 0.1
- _IsHit: 0
- _IsSeeThrough: 1
- _Metallic: 0
- _OcclusionStrength: 1
- _Opacity: 0.7
- _Parallax: 0.005
- _QueueControl: 0
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Size: 0
- _Smoothness: 0.8
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _FlashColor: {r: 1, g: 1, b: 1, a: 1}
- _GlowColor: {r: 5.3403134, g: 5.3403134, b: 0, a: 0}
- _PlayerPosition: {r: 0.5, g: 0.55, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &3929801182760292753
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 9

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d9ca9344cd131c049810707093126ca7
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -38,7 +38,6 @@ Material:
disabledShaderPasses:
- MOTIONVECTORS
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3

View File

@ -57,13 +57,13 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2736699741125954087}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: 0.3420201, y: 0, z: 0, w: 0.9396927}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 6255916646741457976}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 40, y: 0, z: 0}
--- !u!212 &6274137400612009998
SpriteRenderer:
m_ObjectHideFlags: 0
@ -213,7 +213,7 @@ GameObject:
- component: {fileID: 6865346796134993564}
- component: {fileID: 4159255405813448884}
m_Layer: 10
m_Name: BaseBoss
m_Name: AnimatorBaseBoss
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 5975a5a7434cc704c9d60c8ab3750550
guid: 95f91f8d7fca3544fb0577a9dd14caf6
PrefabImporter:
externalObjects: {}
userData:

View File

@ -100,6 +100,10 @@ PrefabInstance:
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: _renderer
value:
objectReference: {fileID: 8411583502041648826}
- target: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Name
value: Rhinoceros
@ -200,15 +204,15 @@ MonoBehaviour:
<CharacterCollider>k__BackingField: {fileID: 6969328794869467798}
<BehaviorTree>k__BackingField: {fileID: 1110469622569527304}
<VisualLook>k__BackingField: {fileID: 1410821550004090100}
<SpriteRenderer>k__BackingField: {fileID: 8411583502041648826}
<Animator>k__BackingField: {fileID: 2875096611673055428}
<HitBoxCollider>k__BackingField: {fileID: 5897569616117255232}
<BossData>k__BackingField: {fileID: 11400000, guid: c8e21ded50a36a549b51c846cf3640b3, type: 2}
<AnimationController>k__BackingField: {fileID: 8314565348215340790}
<BossHealthPoint>k__BackingField: {fileID: 8923351760400967455}
<AIMovement>k__BackingField: {fileID: 9002511558952892456}
<BossSkillController>k__BackingField: {fileID: 1878389004569703936}
<Target>k__BackingField: {fileID: 0}
<SpriteRenderer>k__BackingField: {fileID: 8411583502041648826}
<Animator>k__BackingField: {fileID: 2875096611673055428}
<AnimationController>k__BackingField: {fileID: 8314565348215340790}
--- !u!65 &5897569616117255232 stripped
BoxCollider:
m_CorrespondingSourceObject: {fileID: 8246553021837507316, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}

View File

@ -1,312 +1,12 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &2569800677110986420
--- !u!1001 &2624839957929985237
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 310644174614533744, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 9100000, guid: a6d9ab891e7e22741a581057b97110d5, type: 2}
- target: {fileID: 3476210053167940160, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalPosition.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: _skillList.Array.size
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[0]'
value:
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[1]'
value:
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[2]'
value:
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[3]'
value:
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[4]'
value:
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalScale.x
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalScale.y
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalScale.z
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6274137400612009998, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Size.y
value: 0.55
objectReference: {fileID: 0}
- target: {fileID: 6274137400612009998, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: 884b7fc30283f3e4aad173e3e7bef059, type: 3}
- target: {fileID: 6274137400612009998, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Name
value: SandMole
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 3323198499126332622, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: 5672546178639089928}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: 3
addedObject: {fileID: 1110469622569527304}
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: -3236352117277465236}
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: 6857639742673603861}
m_SourcePrefab: {fileID: 100100000, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
--- !u!4 &988429566761204346 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3323198499126332622, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1410821550004090100 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3476210053167940160, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1878389004569703936 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e547505a3a98b44c9660eec12b91720, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!95 &2875096611673055428 stripped
Animator:
m_CorrespondingSourceObject: {fileID: 310644174614533744, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!1 &4623786526972472839 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1110469622569527304
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d7b55c7ecdb49a4a89fa5e6f9022861, type: 3}
m_Name:
m_EditorClassIdentifier:
startWhenEnabled: 0
asynchronousLoad: 0
pauseWhenDisabled: 0
restartWhenComplete: 0
logTaskChanges: 0
group: 0
resetValuesOnRestart: 0
externalBehavior: {fileID: 11400000, guid: ff3ad0a810bbf9d49a60f5990463ab05, type: 2}
mBehaviorSource:
behaviorName: SandMole
behaviorDescription:
mTaskData:
types: []
parentIndex:
startIndex:
variableStartIndex:
JSONSerialization: '{"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true,"GameObjectmValue":0},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"PropertyMapping":"BlueWater.Enemies.Bosses.SandMole.SandMole/CurrentHealthPoint","PropertyMappingOwner":1,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true,"PropertyMapping":"BlueWater.Enemies.Bosses.SandMole.SandMole/Target","PropertyMappingOwner":2}]}'
fieldSerializationData:
typeName: []
fieldNameHash:
startIndex:
dataPosition:
unityObjects:
- {fileID: 4623786526972472839}
- {fileID: 4623786526972472839}
- {fileID: 4623786526972472839}
byteData:
byteDataArray:
Version: 1.7.9
gizmoViewMode: 2
showBehaviorDesignerGizmo: 0
--- !u!114 &-3236352117277465236
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e606f828f61d0241be522a81ccc2915, type: 3}
m_Name:
m_EditorClassIdentifier:
<Rigidbody>k__BackingField: {fileID: 6368257510650399952}
<CharacterCollider>k__BackingField: {fileID: 6969328794869467798}
<BehaviorTree>k__BackingField: {fileID: 1110469622569527304}
<VisualLook>k__BackingField: {fileID: 1410821550004090100}
<SpriteRenderer>k__BackingField: {fileID: 8411583502041648826}
<Animator>k__BackingField: {fileID: 2875096611673055428}
<HitBoxCollider>k__BackingField: {fileID: 5897569616117255232}
<BossData>k__BackingField: {fileID: 11400000, guid: ac684afe9ab056d4eb4a6b2fedfcf6d9, type: 2}
<AnimationController>k__BackingField: {fileID: 8314565348215340790}
<BossHealthPoint>k__BackingField: {fileID: 8923351760400967455}
<AIMovement>k__BackingField: {fileID: 9002511558952892456}
<BossSkillController>k__BackingField: {fileID: 1878389004569703936}
<Target>k__BackingField: {fileID: 0}
<SandMoleStatus>k__BackingField: {fileID: 6857639742673603861}
_summonMiniSandMoles:
- <HealthPercentage>k__BackingField: 80
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 60
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 40
<SummonTrigger>k__BackingField: 0
- <HealthPercentage>k__BackingField: 20
<SummonTrigger>k__BackingField: 0
--- !u!114 &6857639742673603861
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9aa905dd159cefc4cbeb417c688b9639, type: 3}
m_Name:
m_EditorClassIdentifier:
_stunParticle: {fileID: 6635401445434353523}
--- !u!65 &5897569616117255232 stripped
BoxCollider:
m_CorrespondingSourceObject: {fileID: 8246553021837507316, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!54 &6368257510650399952 stripped
Rigidbody:
m_CorrespondingSourceObject: {fileID: 8919762167155522148, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!136 &6969328794869467798 stripped
CapsuleCollider:
m_CorrespondingSourceObject: {fileID: 4832858849328938018, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8314565348215340790 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: -3401764490790336446, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17488a2bea6f4126a7877ce5d934f865, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!212 &8411583502041648826 stripped
SpriteRenderer:
m_CorrespondingSourceObject: {fileID: 6274137400612009998, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!114 &8923351760400967455 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b9900c0671da864e910821e6447affc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &9002511558952892456 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6865346796134993564, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 75b48aa4b99043cb9e665a892ec46c75, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &8818561255954491281
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 988429566761204346}
m_TransformParent: {fileID: 8932196953512409498}
m_Modifications:
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalScale.x
@ -373,13 +73,323 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
--- !u!4 &5672546178639089928 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
m_PrefabInstance: {fileID: 8818561255954491281}
m_PrefabAsset: {fileID: 0}
--- !u!198 &6635401445434353523 stripped
--- !u!198 &151207866041222199 stripped
ParticleSystem:
m_CorrespondingSourceObject: {fileID: 2770976869746131170, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
m_PrefabInstance: {fileID: 8818561255954491281}
m_PrefabInstance: {fileID: 2624839957929985237}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1203712363435651660 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
m_PrefabInstance: {fileID: 2624839957929985237}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &6191278097168840020
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 2424111193999207001, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: _animationName
value: Idle
objectReference: {fileID: 0}
- target: {fileID: 2424111193999207001, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: initialSkinName
value: Normal
objectReference: {fileID: 0}
- target: {fileID: 2424111193999207001, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: skeletonDataAsset
value:
objectReference: {fileID: 11400000, guid: 31819191fa1f97347bc9f73c0dbeb10e, type: 2}
- target: {fileID: 3216521486739552858, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_SortingOrder
value: 5
objectReference: {fileID: 0}
- target: {fileID: 3216521486739552858, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_Materials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3216521486739552858, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: cd85759cb00b35c4b9d52d8814bf680b, type: 2}
- target: {fileID: 4172430046422716170, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: customSlotMaterials.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4172430046422716170, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: customMaterialOverrides.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4172430046422716170, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: customMaterialOverrides.Array.data[0].originalMaterial
value:
objectReference: {fileID: 2100000, guid: cd85759cb00b35c4b9d52d8814bf680b, type: 2}
- target: {fileID: 4172430046422716170, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: customMaterialOverrides.Array.data[0].overrideDisabled
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4172430046422716170, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: customMaterialOverrides.Array.data[0].replacementMaterial
value:
objectReference: {fileID: 2100000, guid: d9ca9344cd131c049810707093126ca7, type: 2}
- target: {fileID: 5517970820860260785, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: _initialSkinName
value: Normal
objectReference: {fileID: 0}
- target: {fileID: 5517970820860260785, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: _skeletonAnimation
value:
objectReference: {fileID: 8381193314241175309}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalScale.x
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalScale.y
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalScale.z
value: 5
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6377054450616127915, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: _renderer
value:
objectReference: {fileID: 8739437251540422414}
- target: {fileID: 7170637981020870835, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
propertyPath: m_Name
value: SandMole
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 3323198499126332622, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
insertIndex: -1
addedObject: {fileID: 1203712363435651660}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
insertIndex: 3
addedObject: {fileID: -4544136169557839496}
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
insertIndex: -1
addedObject: {fileID: -3493984991810313697}
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
insertIndex: -1
addedObject: {fileID: 4802344397510425122}
m_SourcePrefab: {fileID: 100100000, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
--- !u!114 &769352651641568200 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6865346796134993564, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 75b48aa4b99043cb9e665a892ec46c75, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &978424182761841919 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6377054450616127915, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b9900c0671da864e910821e6447affc, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!136 &1655659061481113974 stripped
CapsuleCollider:
m_CorrespondingSourceObject: {fileID: 4832858849328938018, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!114 &1835238398239900901 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5517970820860260785, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: be4f815e5e3c0d5459559bdc0b8bbbfb, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!65 &2853719656385728416 stripped
BoxCollider:
m_CorrespondingSourceObject: {fileID: 8246553021837507316, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!54 &3324372096500518704 stripped
Rigidbody:
m_CorrespondingSourceObject: {fileID: 8919762167155522148, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3920647224749190631 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7170637981020870835, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!114 &-4544136169557839496
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d7b55c7ecdb49a4a89fa5e6f9022861, type: 3}
m_Name:
m_EditorClassIdentifier:
startWhenEnabled: 0
asynchronousLoad: 0
pauseWhenDisabled: 0
restartWhenComplete: 0
logTaskChanges: 0
group: 0
resetValuesOnRestart: 0
externalBehavior: {fileID: 11400000, guid: ff3ad0a810bbf9d49a60f5990463ab05, type: 2}
mBehaviorSource:
behaviorName: SandMole
behaviorDescription:
mTaskData:
types: []
parentIndex:
startIndex:
variableStartIndex:
JSONSerialization: '{"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true,"GameObjectmValue":0},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"PropertyMapping":"BlueWater.Enemies.Bosses.SandMole.SandMole/CurrentHealthPoint","PropertyMappingOwner":1,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true,"PropertyMapping":"BlueWater.Enemies.Bosses.SandMole.SandMole/Target","PropertyMappingOwner":2}]}'
fieldSerializationData:
typeName: []
fieldNameHash:
startIndex:
dataPosition:
unityObjects:
- {fileID: 3920647224749190631}
- {fileID: 3920647224749190631}
- {fileID: 3920647224749190631}
byteData:
byteDataArray:
Version: 1.7.9
gizmoViewMode: 2
showBehaviorDesignerGizmo: 0
--- !u!114 &-3493984991810313697
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e606f828f61d0241be522a81ccc2915, type: 3}
m_Name:
m_EditorClassIdentifier:
<Rigidbody>k__BackingField: {fileID: 3324372096500518704}
<CharacterCollider>k__BackingField: {fileID: 1655659061481113974}
<BehaviorTree>k__BackingField: {fileID: -4544136169557839496}
<VisualLook>k__BackingField: {fileID: 7338101022445811476}
<HitBoxCollider>k__BackingField: {fileID: 2853719656385728416}
<BossData>k__BackingField: {fileID: 11400000, guid: ac684afe9ab056d4eb4a6b2fedfcf6d9, type: 2}
<BossHealthPoint>k__BackingField: {fileID: 978424182761841919}
<AIMovement>k__BackingField: {fileID: 769352651641568200}
<BossSkillController>k__BackingField: {fileID: 7805708340751103456}
<Target>k__BackingField: {fileID: 0}
<MeshRenderer>k__BackingField: {fileID: 8739437251540422414}
<SpineController>k__BackingField: {fileID: 1835238398239900901}
<SandMoleStatus>k__BackingField: {fileID: 4802344397510425122}
_summonMiniSandMoles: []
--- !u!114 &4802344397510425122
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9aa905dd159cefc4cbeb417c688b9639, type: 3}
m_Name:
m_EditorClassIdentifier:
_spineController: {fileID: 1835238398239900901}
_stunParticle: {fileID: 151207866041222199}
--- !u!4 &7338101022445811476 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3476210053167940160, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!114 &7805708340751103456 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4159255405813448884, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3920647224749190631}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e547505a3a98b44c9660eec12b91720, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &8381193314241175309 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 2424111193999207001, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!23 &8739437251540422414 stripped
MeshRenderer:
m_CorrespondingSourceObject: {fileID: 3216521486739552858, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}
--- !u!4 &8932196953512409498 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3323198499126332622, guid: 5c2f67e75ea578f478f4a2f61f6acfca, type: 3}
m_PrefabInstance: {fileID: 6191278097168840020}
m_PrefabAsset: {fileID: 0}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e3a389dac3e524844ac42dabd7207e64
guid: 58854203209bd294d817b319d4dafc4f
PrefabImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,470 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &455614778658724887
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3323198499126332622}
m_Layer: 10
m_Name: Particles
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3323198499126332622
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 455614778658724887}
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: 6255916646741457976}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2736699741125954087
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3476210053167940160}
- component: {fileID: 3216521486739552858}
- component: {fileID: 2424111193999207001}
- component: {fileID: 4172430046422716170}
m_Layer: 10
m_Name: VisualLook
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3476210053167940160
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2736699741125954087}
serializedVersion: 2
m_LocalRotation: {x: 0.3420201, y: 0, z: 0, w: 0.9396927}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 6255916646741457976}
m_LocalEulerAnglesHint: {x: 40, y: 0, z: 0}
--- !u!23 &3216521486739552858
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2736699741125954087}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 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: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &2424111193999207001
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2736699741125954087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d247ba06193faa74d9335f5481b2b56c, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonDataAsset: {fileID: 0}
initialSkinName:
fixPrefabOverrideViaMeshFilter: 2
initialFlipX: 0
initialFlipY: 0
updateWhenInvisible: 3
separatorSlotNames: []
zSpacing: 0
useClipping: 1
immutableTriangles: 0
pmaVertexColors: 1
clearStateOnDisable: 0
tintBlack: 0
singleSubmesh: 0
fixDrawOrder: 0
addNormals: 0
calculateTangents: 0
maskInteraction: 0
maskMaterials:
materialsMaskDisabled: []
materialsInsideMask: []
materialsOutsideMask: []
disableRenderingOnOverride: 1
physicsPositionInheritanceFactor: {x: 1, y: 1}
physicsRotationInheritanceFactor: 1
physicsMovementRelativeTo: {fileID: 0}
updateTiming: 1
unscaledTime: 0
_animationName:
loop: 0
timeScale: 1
--- !u!114 &4172430046422716170
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2736699741125954087}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26947ae098a8447408d80c0c86e35b48, type: 3}
m_Name:
m_EditorClassIdentifier:
skeletonRenderer: {fileID: 2424111193999207001}
customSlotMaterials: []
customMaterialOverrides: []
--- !u!1 &6453883501752530733
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4470263094854566718}
- component: {fileID: 8246553021837507316}
m_Layer: 12
m_Name: HitBox
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4470263094854566718
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6453883501752530733}
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: 1
m_Children: []
m_Father: {fileID: 6255916646741457976}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &8246553021837507316
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6453883501752530733}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 0.25}
m_Center: {x: 0, y: 0.5, z: 0}
--- !u!1 &7170637981020870835
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6255916646741457976}
- component: {fileID: 8919762167155522148}
- component: {fileID: 4832858849328938018}
- component: {fileID: 6820170460284289212}
- component: {fileID: 4032255264356834775}
- component: {fileID: 9052061988704076548}
- component: {fileID: 6377054450616127915}
- component: {fileID: 5517970820860260785}
- component: {fileID: 6865346796134993564}
- component: {fileID: 4159255405813448884}
m_Layer: 10
m_Name: SpineBaseBoss
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6255916646741457976
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
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: 1
m_Children:
- {fileID: 3476210053167940160}
- {fileID: 4470263094854566718}
- {fileID: 3323198499126332622}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!54 &8919762167155522148
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
serializedVersion: 4
m_Mass: 100
m_Drag: 0
m_AngularDrag: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 1
m_Constraints: 112
m_CollisionDetection: 2
--- !u!136 &4832858849328938018
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.5
m_Height: 1
m_Direction: 1
m_Center: {x: 0, y: 0.5, z: 0}
--- !u!114 &6820170460284289212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 373b52eb9bf8c40f785bb6947a1aee66, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1073741824
drawGizmos: 1
detailedGizmos: 0
startEndModifier:
addPoints: 0
exactStartPoint: 3
exactEndPoint: 3
useRaycasting: 0
mask:
serializedVersion: 2
m_Bits: 4294967295
useGraphRaycasting: 0
traversableTags: -1
tagPenalties: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
graphMask:
value: -1
--- !u!114 &4032255264356834775
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f6eb1402c17e84a9282a7f0f62eb584f, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1073741824
radius: 0.5
height: 1
canMove: 1
maxSpeed: 1
gravity: {x: NaN, y: NaN, z: NaN}
groundMask:
serializedVersion: 2
m_Bits: 4294967295
endReachedDistance: 0.1
whenCloseToDestination: 0
rvoDensityBehavior:
enabled: 1
densityThreshold: 0.5
returnAfterBeingPushedAway: 0
progressAverage: 0
lastJobDensityResult: 0
centerOffsetCompatibility: NaN
repathRateCompatibility: NaN
canSearchCompability: 0
orientation: 0
enableRotation: 0
autoRepath:
mode: 2
period: 0.5
sensitivity: 10
maximumPeriod: 2
visualizeSensitivity: 0
targetCompatibility: {fileID: 0}
maxAcceleration: -2.5
rotationSpeed: 360
slowdownDistance: 0.3
pickNextWaypointDist: 0.5
alwaysDrawGizmos: 0
slowWhenNotFacingTarget: 1
preventMovingBackwards: 0
constrainInsideGraph: 0
--- !u!114 &9052061988704076548
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 77f586f285b3847808d79083bd19ef1f, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 1073741824
quality: 0
splitAtEveryPortal: 0
accountForGridPenalties: 0
--- !u!114 &6377054450616127915
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7b9900c0671da864e910821e6447affc, type: 3}
m_Name:
m_EditorClassIdentifier:
_characterCollider: {fileID: 4832858849328938018}
_spriteRenderer: {fileID: 0}
_particleInstantiateLocation: {fileID: 0}
<MaxHealthPoint>k__BackingField: 0
<CurrentHealthPoint>k__BackingField: 0
<InvincibilityDuration>k__BackingField: 0.1
_attackedSfxName:
_dieSfxName:
_attackedParticle: {fileID: 0}
_dieParticle: {fileID: 0}
--- !u!114 &5517970820860260785
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: be4f815e5e3c0d5459559bdc0b8bbbfb, type: 3}
m_Name:
m_EditorClassIdentifier:
_skeletonAnimation: {fileID: 0}
_initialSkinName: default
--- !u!114 &6865346796134993564
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 75b48aa4b99043cb9e665a892ec46c75, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &4159255405813448884
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7170637981020870835}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e547505a3a98b44c9660eec12b91720, type: 3}
m_Name:
m_EditorClassIdentifier:
_skillList: []

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5c2f67e75ea578f478f4a2f61f6acfca
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -167,6 +167,10 @@ PrefabInstance:
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: _renderer
value:
objectReference: {fileID: 5448061580005708447}
- target: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: _dieSfxName
value: TitanSlimeDie
@ -340,13 +344,23 @@ MonoBehaviour:
<CharacterCollider>k__BackingField: {fileID: 6888416268787095219}
<BehaviorTree>k__BackingField: {fileID: 3336831312449989230}
<VisualLook>k__BackingField: {fileID: 3221387912671045841}
<SpriteRenderer>k__BackingField: {fileID: 5448061580005708447}
<Animator>k__BackingField: {fileID: 1785378898368314593}
<HitBoxCollider>k__BackingField: {fileID: 7996411433804189797}
<BossData>k__BackingField: {fileID: 11400000, guid: c9c36628b677b854999f97966b3c5b14, type: 2}
<AnimationController>k__BackingField: {fileID: 5495465377430151891}
<BossHealthPoint>k__BackingField: {fileID: 4969309465389398842}
<AIMovement>k__BackingField: {fileID: 4886349608629249037}
<BossSkillController>k__BackingField: {fileID: 2680193030030060069}
<Target>k__BackingField: {fileID: 0}
<SpriteRenderer>k__BackingField: {fileID: 5448061580005708447}
<Animator>k__BackingField: {fileID: 1785378898368314593}
<AnimationController>k__BackingField: {fileID: 5495465377430151891}
_rabbit: {fileID: 5353233326328218742}
<TitanSlimeState>k__BackingField:
<Level>k__BackingField: 0
<Size>k__BackingField: 0
<MaxHp>k__BackingField: 0
<AnimationLength>k__BackingField: 0
<ViewRange>k__BackingField: 0
<RandomCooldown>k__BackingField: {x: 0, y: 0}
<HasRabbit>k__BackingField: 0
<JumpCameraShakingPower>k__BackingField: 0
<JumpCameraShakingDuration>k__BackingField: 0

View File

@ -415,6 +415,22 @@ MonoBehaviour:
m_CallState: 2
m_ActionId: a5d9ffcb-5c4f-4c6d-8335-9060bbea120a
m_ActionName: 'Combat/OpenDevelopMenu[/Keyboard/f1]'
- m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 522031830802304584}
m_TargetAssemblyTypeName: BlueWater.Players.Combat.CombatInput, Assembly-CSharp
m_MethodName: OnForceKillBoss
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_ActionId: 2f6cc7b3-e806-4b78-b11f-e6ed70bb67ac
m_ActionName: 'Combat/ForceKillBoss[/Keyboard/f2]'
m_NeverAutoSwitchControlSchemes: 0
m_DefaultControlScheme:
m_DefaultActionMap: Combat
@ -661,13 +677,13 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8540731795983184644}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalRotation: {x: 0.3420201, y: 0, z: 0, w: 0.9396927}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 6, y: 6, z: 6}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 668700138157159316}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: 40, y: 0, z: 0}
--- !u!212 &5558898291459354456
SpriteRenderer:
m_ObjectHideFlags: 0

View File

@ -85,7 +85,7 @@ MeshRenderer:
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 5
m_SortingOrder: 1
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &545895004707295019
MonoBehaviour:

View File

@ -115,7 +115,6 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6052826474412574974}
- {fileID: 8517595696594260902}
- {fileID: 4108087243422214688}
- {fileID: 6277086964971212290}
@ -8880,69 +8879,6 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
m_PrefabInstance: {fileID: 5427090224258738352}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5445778169910207642
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7604816022990125953}
m_Modifications:
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalPosition.x
value: -18.49
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalPosition.y
value: -3.97
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalPosition.z
value: 10.73
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3281663413899102263, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
propertyPath: m_Name
value: Bush02 (2)
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects:
- {fileID: 2825027760425635220, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
--- !u!4 &6052826474412574974 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 1759992658637499492, guid: 6d17f81a406ca69439ac4e8f87c6b3ec, type: 3}
m_PrefabInstance: {fileID: 5445778169910207642}
m_PrefabAsset: {fileID: 0}
--- !u!1001 &5449257936156117678
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -79,7 +79,7 @@ PrefabInstance:
- target: {fileID: 3580758810857167321, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: aeefbca1d88d1ed4c9e8aa4d8d008383, type: 3}
objectReference: {fileID: 21300000, guid: 27e9d61a31b61aa40ad14805e0c184eb, type: 3}
- target: {fileID: 3580758810857167321, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_WasSpriteAssigned
value: 1
@ -88,6 +88,34 @@ PrefabInstance:
propertyPath: m_Name
value: Rockfall
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalScale.x
value: 2
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalScale.y
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalPosition.z
value: -0.5
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalRotation.w
value: 0.9396927
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalRotation.x
value: 0.3420201
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 40
objectReference: {fileID: 0}
- target: {fileID: 7438534416270888028, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7986070582027999988, guid: bfc5c806b2fa3ba40850df302d3db0b7, type: 3}
propertyPath: m_LocalScale.x
value: 1.5
@ -170,6 +198,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
<MaxHealthPoint>k__BackingField: 1
<CurrentHealthPoint>k__BackingField: 0
<InvincibilityDuration>k__BackingField: 0
_dieSfxName:
_dieParticle: {fileID: 19826678, guid: 660dfd0ccf26cbf489a7556236949683, type: 3}
_sphereCollider: {fileID: 2971964863692897937}

View File

@ -209,6 +209,12 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: isMoving
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer

View File

@ -14,7 +14,7 @@ MonoBehaviour:
m_EditorClassIdentifier:
atlasAssets:
- {fileID: 11400000, guid: 1d31993ca2e2a364a99a30395604b3a8, type: 2}
scale: 0.0005
scale: 0.001
skeletonJSON: {fileID: 4900000, guid: 8dde5b90ef9786042907ed6079c968f9, type: 3}
isUpgradingBlendModeMaterials: 0
blendModeMaterials:

View File

@ -1041,7 +1041,7 @@
"m_AllowMaterialOverride": false,
"m_SurfaceType": 1,
"m_ZTestMode": 4,
"m_ZWriteControl": 0,
"m_ZWriteControl": 1,
"m_AlphaMode": 0,
"m_RenderFace": 0,
"m_AlphaClip": true,
@ -2009,10 +2009,10 @@
"m_Expanded": true,
"m_Position": {
"serializedVersion": "2",
"x": -523.9999389648438,
"y": 117.00000762939453,
"width": 207.99996948242188,
"height": 301.9999694824219
"x": -719.0000610351563,
"y": 105.0000228881836,
"width": 208.00006103515626,
"height": 302.0000305175781
}
},
"m_Slots": [

File diff suppressed because it is too large Load Diff

View File

@ -1,55 +0,0 @@
Shader "Custom/NewSurfaceShader"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {}
_Glossiness ("Smoothness", Range(0,1)) = 0.5
_Metallic ("Metallic", Range(0,1)) = 0.0
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 200
ZWrite Off
Blend SrcAlpha OneMinusSrcAlpha
CGPROGRAM
// Physically based Standard lighting model, and enable shadows on all light types
#pragma surface surf Standard fullforwardshadows
// Use shader model 3.0 target, to get nicer looking lighting
#pragma target 3.0
sampler2D _MainTex;
struct Input
{
float2 uv_MainTex;
};
half _Glossiness;
half _Metallic;
fixed4 _Color;
// Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
// See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
// #pragma instancing_options assumeuniformscaling
UNITY_INSTANCING_BUFFER_START(Props)
// put more per-instance properties here
UNITY_INSTANCING_BUFFER_END(Props)
void surf (Input IN, inout SurfaceOutputStandard o)
{
// Albedo comes from a texture tinted by color
fixed4 c = tex2D (_MainTex, IN.uv_MainTex) * _Color;
o.Albedo = c.rgb;
// Metallic and smoothness come from slider variables
o.Metallic = _Metallic;
o.Smoothness = _Glossiness;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 896fe9d890302c34a98ea991113fc991
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 95ddede70a8a6cc4dbd0849c7b976d1a
guid: 25b64c74397178e47a04794eb9a74d8f
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}

View File

@ -21,7 +21,7 @@ MonoBehaviour:
startIndex:
variableStartIndex:
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(707.6564,145.842773)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(3.069271,152.681244)"},"ID":1,"Name":"Start
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-76.66675,145.294128)"},"ID":2,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(76.06769,146.666718)"},"ID":3,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":4,"Name":"Die
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-76.66675,145.294128)"},"ID":2,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(76.06769,146.666718)"},"ID":3,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":4,"Name":"Die
Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-547.465149,148.989136)"},"ID":5,"Name":"Die
Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedInt","NodeData":{"Offset":"(-104.999634,149.904846)","Comment":"CurrentHealthPoint
== 0"},"ID":6,"Name":"Compare Shared Int","Instant":true,"SharedIntvariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},"SharedIntcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.StopBehaviorTree","NodeData":{"Offset":"(93.47067,153.019165)"},"ID":7,"Name":"Stop

View File

@ -21,7 +21,7 @@ MonoBehaviour:
startIndex:
variableStartIndex:
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(707.6564,145.842773)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(3.069271,152.681244)"},"ID":1,"Name":"Start
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-76.66675,145.294128)"},"ID":2,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(76.06769,146.666718)"},"ID":3,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":4,"Name":"Die
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-76.66675,145.294128)"},"ID":2,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(76.06769,146.666718)"},"ID":3,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":4,"Name":"Die
Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-547.465149,148.989136)"},"ID":5,"Name":"Die
Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedInt","NodeData":{"Offset":"(-104.999634,149.904846)","Comment":"CurrentHealthPoint
== 0"},"ID":6,"Name":"Compare Shared Int","Instant":true,"SharedIntvariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},"SharedIntcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.StopBehaviorTree","NodeData":{"Offset":"(93.47067,153.019165)"},"ID":7,"Name":"Stop