#20 미니 모래 두더지 소환 기능 추가

+ MiniSandMole 프리팹 추가
+ BossConfiguration So에 MiniSandMole 추가
+ MiniSandMoleData, MiniSingleRollData So 추가
+ MiniSandMole BehaviorTree 추가
+ SandMoleMapController 클래스 추가
+ ITarget, ICurrentDirection 인터페이스 추가
+ Bt Actions - CanSkill, ActivateSkill 로직 변경
+ BossHealthPoint 로직 변경
+ 미니 모래 두더지에 소환할 때, 죽을 때, 디졸브 효과 추가

Closes #20
This commit is contained in:
Nam Tae Gun 2024-06-16 20:09:42 +09:00
parent 4a33648e0f
commit 15bfe87a09
35 changed files with 10987 additions and 108 deletions

View File

@ -3226,17 +3226,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 672714555}
m_CullTransparentMesh: 1
--- !u!114 &690823801 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 6585123087190923213, guid: 39e32b91cc570794e9e843b39f89e400, type: 3}
m_PrefabInstance: {fileID: 1213070729}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45ca5fc4b0d9415ca599aa7cd17f3370, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &704479487
GameObject:
m_ObjectHideFlags: 0
@ -5231,6 +5220,17 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 39e32b91cc570794e9e843b39f89e400, type: 3}
--- !u!114 &1213070730 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4232848145969149048, guid: 39e32b91cc570794e9e843b39f89e400, type: 3}
m_PrefabInstance: {fileID: 1213070729}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eb656087fe6c652469b29504a37df539, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1243437081
GameObject:
m_ObjectHideFlags: 0
@ -8527,7 +8527,7 @@ MonoBehaviour:
<FirstTutorialMapController>k__BackingField: {fileID: 728440691}
<TitanSlimeMapController>k__BackingField: {fileID: 36953787}
<RhinocerosMapController>k__BackingField: {fileID: 1011270532}
<SandMoleMapController>k__BackingField: {fileID: 690823801}
<SandMoleMapController>k__BackingField: {fileID: 1213070730}
--- !u!4 &1597727070
Transform:
m_ObjectHideFlags: 0

View File

@ -13,21 +13,21 @@ namespace BlueWater.BehaviorTrees.Enemies.Bosses.Actions
[SerializeField]
private BossSkillName _bossSkillName;
private Boss _boss;
private BossSkillController _bossSkillController;
public override void OnAwake()
{
_boss = transform.GetComponent<Boss>();
_bossSkillController = GetComponent<BossSkillController>();
}
public override void OnStart()
{
_boss.ActivateSkill(_bossSkillName.ToString());
_bossSkillController.ActivateSkill(_bossSkillName.ToString());
}
public override TaskStatus OnUpdate()
{
return _boss.IsSkillActive ? TaskStatus.Running : TaskStatus.Success;
return _bossSkillController.IsSkillActive ? TaskStatus.Running : TaskStatus.Success;
}
}
}

View File

@ -12,16 +12,16 @@ namespace BlueWater.BehaviorTrees.Enemies.Bosses.Conditionals
[SerializeField]
private BossSkillName _bossSkillName;
private Boss _boss;
private BossSkillController _bossSkillController;
public override void OnAwake()
{
_boss = transform.GetComponent<Boss>();
_bossSkillController = GetComponent<BossSkillController>();
}
public override TaskStatus OnUpdate()
{
return _boss.CanSkill(_bossSkillName.ToString()) ? TaskStatus.Success : TaskStatus.Failure;
return _bossSkillController.CanSkill(_bossSkillName.ToString()) ? TaskStatus.Success : TaskStatus.Failure;
}
}
}

View File

@ -1,4 +1,5 @@
using BehaviorDesigner.Runtime;
using BlueWater.Interfaces;
using Pathfinding;
using Sirenix.OdinInspector;
using UnityEngine;
@ -10,7 +11,8 @@ namespace BlueWater.Enemies.Bosses
None = 0,
TitanSlime,
Rhinoceros,
SandMole
SandMole,
MiniSandMole
}
public enum BossSkillName
@ -27,10 +29,9 @@ namespace BlueWater.Enemies.Bosses
GateOfSpikes,
MultiThrowSpikes,
SingleRoll,
SummonMiniSandMole
}
public abstract class Boss : MonoBehaviour
public abstract class Boss : MonoBehaviour, ITarget
{
// Variables
#region Variables

View File

@ -4,17 +4,27 @@ using BlueWater.Audios;
using BlueWater.Interfaces;
using BlueWater.Uis;
using BlueWater.Utility;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses
{
public class BossHealthPoint : MonoBehaviour, IDamageable
{
// Components
// 컴포넌트
[Title("컴포넌트")]
[SerializeField]
private CapsuleCollider _characterCollider;
[SerializeField]
private SpriteRenderer _spriteRenderer;
// Variables
[SerializeField]
private Transform _particleInstantiateLocation;
// 체력 설정
[field: Title("체력 설정")]
[field: SerializeField]
public int MaxHealthPoint { get; private set; }
[field: SerializeField]
@ -25,6 +35,8 @@ namespace BlueWater.Enemies.Bosses
private bool _enableTakeDamage = true;
// 효과 설정
[Title("효과 설정")]
[SerializeField]
private string _attackedSfxName;
@ -36,9 +48,6 @@ namespace BlueWater.Enemies.Bosses
[SerializeField]
private ParticleSystem _dieParticle;
[SerializeField]
private Transform _particleInstantiateLocation;
private FieldBossHealthPointUi _fieldBossHealthPointUi;
private WaitForSeconds _flashWhiteWaitTime;
@ -57,7 +66,10 @@ namespace BlueWater.Enemies.Bosses
// Unity events
private void Start()
{
InitializeComponent();
_flashWhiteWaitTime = new WaitForSeconds(_damageInterval);
_fieldBossHealthPointUi = CombatUiManager.Instance.FieldBossHealthPointUi;
}
private void OnDestroy()
@ -69,21 +81,25 @@ namespace BlueWater.Enemies.Bosses
}
// Initialize methods
public void InitializeComponents(bool enableHealthChangedEvent, CapsuleCollider characterCollider,
SpriteRenderer spriteRenderer, int maxHealthPoint, string bossName, Transform particleInstantiateLocation = null)
[Button("셋팅 초기화")]
private void InitializeComponent()
{
_characterCollider = GetComponent<CapsuleCollider>();
_spriteRenderer = GetComponentInChildren<SpriteRenderer>();
}
public void Initialize(bool enableHealthChangedEvent, int maxHealthPoint, string bossName, Transform particleInstantiateLocation = null)
{
_fieldBossHealthPointUi = CombatUiManager.Instance.FieldBossHealthPointUi;
_enableHealthChangedEvent = enableHealthChangedEvent;
MaxHealthPoint = maxHealthPoint;
_particleInstantiateLocation = particleInstantiateLocation;
_fieldBossHealthPointUi ??= CombatUiManager.Instance.FieldBossHealthPointUi;
if (_enableHealthChangedEvent)
{
OnHealthChanged += _fieldBossHealthPointUi.SetCurrentHealthPoint;
_fieldBossHealthPointUi.SetBoss(maxHealthPoint, bossName);
_fieldBossHealthPointUi.SetBoss(MaxHealthPoint, bossName);
}
_characterCollider = characterCollider;
_spriteRenderer = spriteRenderer;
MaxHealthPoint = maxHealthPoint;
_particleInstantiateLocation = particleInstantiateLocation;
SetCurrentHealthPoint(MaxHealthPoint);
}
@ -110,6 +126,11 @@ namespace BlueWater.Enemies.Bosses
var changeHp = Mathf.Max(CurrentHealthPoint - damageAmount, 0);
SetCurrentHealthPoint(changeHp);
if (_spriteRenderer.material.HasInt(_isHitHash))
{
Utils.StartUniqueCoroutine(this, ref _flashWhiteCoroutine, FlashWhiteCoroutine());
}
// 죽었는지 체크
if (changeHp == 0f)
{
@ -128,11 +149,7 @@ namespace BlueWater.Enemies.Bosses
{
AudioManager.Instance.PlaySfx(_attackedSfxName);
}
if (_spriteRenderer.material.HasInt(_isHitHash))
{
Utils.StartUniqueCoroutine(this, ref _flashWhiteCoroutine, FlashWhiteCoroutine());
}
Utils.StartUniqueCoroutine(this, ref _damageIntervalCoroutine, Utils.CoolDownCoroutine(_damageInterval, EndDamageIntervalCoroutine));
}

View File

@ -1,4 +1,5 @@
using BlueWater.Maps;
using BlueWater.Interfaces;
using BlueWater.Maps;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.Rhinoceros
@ -13,7 +14,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros
SkyFallSmash = 5
}
public class Rhinoceros : Boss
public class Rhinoceros : Boss, ICurrentDirection
{
// Variables
#region Variables
@ -74,7 +75,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros
public override void Initialize()
{
BossHealthPoint.InitializeComponents(true, CharacterCollider, SpriteRenderer, RhinocerosData.MaxHealthPoint,
BossHealthPoint.Initialize(true, RhinocerosData.MaxHealthPoint,
RhinocerosData.DisplayName, BossMapController.ParticleInstantiateLocation);
BossSkillController.Initialize(BossData.SkillDataList);
SetMoveSpeed(RhinocerosData.MoveSpeed);

View File

@ -0,0 +1,209 @@
using System.Collections;
using BehaviorDesigner.Runtime;
using BlueWater.Interfaces;
using BlueWater.Maps;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace BlueWater.Enemies.Bosses.SandMole
{
public class MiniSandMole : MonoBehaviour, ITarget, ICurrentDirection
{
// 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);
}
}
// 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()
{
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.ParticleInstantiateLocation);
BossHealthPoint.OnDead += HandleDie;
BossSkillController.Initialize(BossData.SkillDataList);
SpriteRenderer.material.SetFloat(_dissolveValueHash, 0f);
var elapsedTime = 0f;
while (elapsedTime <= _spawnDissolveTime)
{
var value = Mathf.Lerp(0f, 1f, elapsedTime / _spawnDissolveTime);
SpriteRenderer.material.SetFloat(_dissolveValueHash, value);
elapsedTime += Time.deltaTime;
yield return null;
}
SpriteRenderer.material.SetFloat(_dissolveValueHash, 1f);
BehaviorTree.EnableBehavior();
}
#endregion
// Methods
#region Methods
private void HandleDie()
{
StartCoroutine(DieCoroutine());
}
private IEnumerator DieCoroutine()
{
if (Rigidbody)
{
Rigidbody.isKinematic = true;
}
AnimationController.SetAnimationTrigger("isDead");
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, 1f);
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

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d2c9c11e3a59f3846831e295e4ace612
timeCreated: 1717140083

View File

@ -1,4 +1,7 @@
using BlueWater.Maps;
using System;
using System.Collections.Generic;
using BlueWater.Interfaces;
using BlueWater.Maps;
using Sirenix.OdinInspector;
using UnityEngine;
@ -10,18 +13,31 @@ namespace BlueWater.Enemies.Bosses.SandMole
GateOfSpikes,
MultiThrowSpikes,
SingleRoll,
SummonMiniSandMole
}
[Serializable]
public class SummonMiniSandMole
{
[field: SerializeField]
public float HealthPercentage { get; private set; }
[field: SerializeField]
public bool SummonTrigger { get; set; }
}
public class SandMole : Boss
public class SandMole : Boss, ICurrentDirection
{
// Variables
#region Variables
[field: SerializeField, Required]
public SandMoleStatus SandMoleStatus { get; private set; }
[SerializeField]
private List<SummonMiniSandMole> _summonMiniSandMoles;
public SandMoleData SandMoleData { get; private set; }
public BossMapController BossMapController { get; private set; }
public SandMoleMapController SandMoleMapController { get; private set; }
private bool _isMoving;
public bool IsMoving
@ -61,6 +77,13 @@ namespace BlueWater.Enemies.Bosses.SandMole
FlipVisualLook();
}
protected override void OnDestroy()
{
base.OnDestroy();
BossHealthPoint.OnHealthChanged -= SummonMiniSandMole;
}
#endregion
// Initialize methods
@ -72,13 +95,14 @@ namespace BlueWater.Enemies.Bosses.SandMole
SandMoleStatus = GetComponent<SandMoleStatus>();
SandMoleData = BossData as SandMoleData;
BossMapController = MapManager.Instance.SandMoleMapController;
SandMoleMapController = MapManager.Instance.SandMoleMapController;
}
public override void Initialize()
{
BossHealthPoint.InitializeComponents(true, CharacterCollider, SpriteRenderer, SandMoleData.MaxHealthPoint,
SandMoleData.DisplayName, BossMapController.ParticleInstantiateLocation);
BossHealthPoint.Initialize(true, SandMoleData.MaxHealthPoint,
SandMoleData.DisplayName, SandMoleMapController.ParticleInstantiateLocation);
BossHealthPoint.OnHealthChanged += SummonMiniSandMole;
BossSkillController.Initialize(BossData.SkillDataList);
SetMoveSpeed(SandMoleData.MoveSpeed);
StopMove();
@ -100,7 +124,20 @@ namespace BlueWater.Enemies.Bosses.SandMole
}
AnimationController.SetAnimationTrigger("isDead");
BossMapController.MapClear();
SandMoleMapController.MapClear();
}
private void SummonMiniSandMole(int currentHp)
{
var currentHealthPercentage = (float)currentHp / BossData.MaxHealthPoint * 100f;
foreach (var element in _summonMiniSandMoles)
{
if (currentHealthPercentage > element.HealthPercentage || element.SummonTrigger) continue;
SandMoleMapController.SummonMiniSandMole();
element.SummonTrigger = true;
}
}
private void FlipVisualLook()

View File

@ -43,7 +43,7 @@ namespace BlueWater.Enemies.Bosses.TitanSlime
MinCoolDown = TitanSlimeState.RandomCooldown.x;
MaxCoolDown = TitanSlimeState.RandomCooldown.y;
BossHealthPoint.InitializeComponents(TitanSlimeState.HasRabbit, CharacterCollider, SpriteRenderer, TitanSlimeState.MaxHp,
BossHealthPoint.Initialize(TitanSlimeState.HasRabbit, TitanSlimeState.MaxHp,
TitanSlimeData.DisplayName, _titanSlimeMapController.ParticleInstantiateLocation);
BossSkillController.Initialize(BossData.SkillDataList);

View File

@ -1,6 +1,7 @@
using System.Collections.Generic;
using BlueWater.Enemies.Bosses;
using BlueWater.Enemies.Bosses.Rhinoceros;
using BlueWater.Enemies.Bosses.SandMole;
using BlueWater.Enemies.Bosses.TitanSlime;
using Sirenix.OdinInspector;
using UnityEngine;
@ -75,5 +76,20 @@ namespace BlueWater.Enemies
instantiateBossLeft.AddForce(_leftSplitDirection * _splitPower, ForceMode.Impulse);
instantiateBossRight.AddForce(_rightSplitDirection * _splitPower, ForceMode.Impulse);
}
// MiniSandMole
public MiniSandMole InstantiateMiniSandMole(Vector3 spawnPosition, Transform instantiateLocation = null)
{
if (!BossConfigurationDictionary.TryGetValue(BossType.MiniSandMole, out var bossConfiguration))
{
Debug.LogError($"보스 생성 오류 : 키값 {BossType.MiniSandMole}을(를) 확인해주세요.");
return null;
}
var instantiateBoss = Instantiate(bossConfiguration, spawnPosition, Quaternion.identity, instantiateLocation).GetComponent<MiniSandMole>();
instantiateBoss.Initialize();
return instantiateBoss;
}
}
}

View File

@ -0,0 +1,9 @@
using UnityEngine;
namespace BlueWater.Interfaces
{
public interface ICurrentDirection
{
Vector3 CurrentDirection { get; set; }
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6493928181896094bae9cf08de680714
timeCreated: 1716899052

View File

@ -0,0 +1,9 @@
using UnityEngine;
namespace BlueWater.Interfaces
{
public interface ITarget
{
Collider Target { get; }
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c6f831a9396c10b41bfa3875dc6cdefa
timeCreated: 1716899052

View File

@ -15,7 +15,7 @@ namespace BlueWater.Maps
public BossMapController RhinocerosMapController { get; private set; }
[field: SerializeField]
public BossMapController SandMoleMapController { get; private set; }
public SandMoleMapController SandMoleMapController { get; private set; }
private MapController _currentMapController;

View File

@ -0,0 +1,32 @@
using System.Collections.Generic;
using BlueWater.Enemies;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Maps
{
public class SandMoleMapController : BossMapController
{
[SerializeField, Required]
protected Transform CenterSpawnTransform;
[SerializeField, Required]
protected List<Transform> MiniSandMoleSpawnTransforms;
public void SummonMiniSandMole()
{
var random1 = Random.Range(0, MiniSandMoleSpawnTransforms.Count);
int random2;
do
{
random2 = Random.Range(0, MiniSandMoleSpawnTransforms.Count);
} while (random2 == random1);
var miniSandMole1 = EnemyManager.Instance.InstantiateMiniSandMole(MiniSandMoleSpawnTransforms[random1].position, EnemyInstantiateLocation);
miniSandMole1.Initialize();
var miniSandMole2 = EnemyManager.Instance.InstantiateMiniSandMole(MiniSandMoleSpawnTransforms[random2].position, EnemyInstantiateLocation);
miniSandMole2.Initialize();
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: eb656087fe6c652469b29504a37df539
timeCreated: 1717153632

View File

@ -19,3 +19,5 @@ MonoBehaviour:
<Prefab>k__BackingField: {fileID: 4623786526972472839, guid: b3fede52cd9ea854fab2ad603b53dd77, type: 3}
- <BossType>k__BackingField: 3
<Prefab>k__BackingField: {fileID: 4623786526972472839, guid: e3a389dac3e524844ac42dabd7207e64, type: 3}
- <BossType>k__BackingField: 4
<Prefab>k__BackingField: {fileID: 811732657406064749, guid: 5975a5a7434cc704c9d60c8ab3750550, type: 3}

View File

@ -0,0 +1,23 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 32c16666a1f9189489ca45f420907595, type: 3}
m_Name: MiniSandMoleData
m_EditorClassIdentifier:
<Name>k__BackingField: MiniSandMole
<DisplayName>k__BackingField: "\uBBF8\uB2C8 \uBAA8\uB798 \uB450\uB354\uC9C0"
<MaxHealthPoint>k__BackingField: 30
<TargetLayer>k__BackingField:
serializedVersion: 2
m_Bits: 2048
<SkillDataList>k__BackingField:
- {fileID: 6760430575876107212, guid: 23d0aa0f7beb06342b545024c1195523, type: 3}
<MoveSpeed>k__BackingField: 3

View File

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

View File

@ -0,0 +1,41 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: 1754c19573409534085289855f7331e3, type: 3}
m_Name: MiniSingleRollData
m_EditorClassIdentifier:
<Name>k__BackingField: SingleRoll
<DisplayName>k__BackingField: "\uAD6C\uB974\uAE30"
<Description>k__BackingField:
<Damage>k__BackingField: 1
<Cooldown>k__BackingField: 0
<Radius>k__BackingField: 0
<CastingTime>k__BackingField: 0.5
<Duration>k__BackingField: 0
<TargetLayer>k__BackingField:
serializedVersion: 2
m_Bits: 2432
<WallLayer>k__BackingField:
serializedVersion: 2
m_Bits: 128
<GroundLayer>k__BackingField:
serializedVersion: 2
m_Bits: 64
<RollSpeed>k__BackingField: 40
<PushPower>k__BackingField: 8
<AirJumpForce>k__BackingField: 3
<BounceBackForce>k__BackingField: 200
<CameraShakingPower>k__BackingField: 2
<CameraShakingDuration>k__BackingField: 0.5
<RockfallPrefab>k__BackingField: {fileID: 0}
<RandomSide>k__BackingField: {x: -2, y: 2}
<RockfallInterval>k__BackingField: 2
<RockfallSpawnHeight>k__BackingField: 5

View File

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

View File

@ -1,3 +1,4 @@
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole.Skills
@ -32,13 +33,13 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
[field: SerializeField]
public GameObject RockfallPrefab { get; private set; }
[field: SerializeField]
[field: SerializeField, ShowIf("@RockfallPrefab")]
public Vector2 RandomSide { get; private set; } = new(-2, 2);
[field: SerializeField]
[field: SerializeField, ShowIf("@RockfallPrefab")]
public float RockfallInterval { get; private set; } = 2f;
[field: SerializeField]
[field: SerializeField, ShowIf("@RockfallPrefab")]
public float RockfallSpawnHeight { get; private set; } = 5f;
}
}

View File

@ -16,11 +16,11 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private bool _isDrawingGizmo = true;
private SingleRollData _singleRollData;
private SandMole _sandMole;
private AnimationController _animationController;
private Rigidbody _userRigidbody;
private CapsuleCollider _userCollider;
private Collider _targetCollider;
private ICurrentDirection _iCurrentDirection;
private BossMapController _sandMoleMapController;
private float _colliderRadius;
private float _attackRadius;
@ -35,17 +35,15 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
protected override void BasicSetting()
{
if (!_sandMole)
{
_sandMole = SkillUser.GetComponent<SandMole>();
_animationController = _sandMole.AnimationController;
_userRigidbody = _sandMole.Rigidbody;
_userCollider = _sandMole.CharacterCollider;
_targetCollider = _sandMole.Target;
_sandMoleMapController = MapManager.Instance.SandMoleMapController;
_colliderRadius = _userCollider.radius * _sandMole.transform.localScale.x;
_attackRadius = _colliderRadius * 0.5f;
}
_animationController = SkillUser.GetComponent<AnimationController>();
_userRigidbody = SkillUser.GetComponent<Rigidbody>();
_userCollider = SkillUser.GetComponent<CapsuleCollider>();
_targetCollider = SkillUser.GetComponent<ITarget>().Target;
_sandMoleMapController = MapManager.Instance.SandMoleMapController;
_iCurrentDirection = SkillUser.GetComponent<ICurrentDirection>();
_colliderRadius = _userCollider.radius * SkillUser.transform.localScale.x;
_attackRadius = _colliderRadius * 0.5f;
_singleRollData = (SingleRollData)SkillData;
HitColliders = new Collider[4];
@ -60,7 +58,6 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private IEnumerator SkillCoroutine(params Action[] actions)
{
EnableSkill = false;
_sandMole.StopMove();
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.SingleRoll);
var animationStarted = false;
@ -94,7 +91,7 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
var angle = Mathf.Atan2(targetDirection.x, targetDirection.z) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0, angle, 0);
_sandMole.CurrentDirection = targetDirection;
_iCurrentDirection.CurrentDirection = targetDirection;
ShowIndicator();
var elapsedTime = 0f;
@ -170,22 +167,25 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
yield return new WaitForFixedUpdate();
}
var rockfallCount = (int)(targetDistance / _singleRollData.RockfallInterval);
for (var i = 2; i < rockfallCount; i++)
{
if (!SkillUser)
{
EndSkill(SkillData.Cooldown, actions[0]);
yield break;
}
var randomSide = Random.Range(_singleRollData.RandomSide.x, _singleRollData.RandomSide.y);
var spawnPosition = SkillUser.transform.position
+ -targetDirection * _singleRollData.RockfallInterval * i
+ Vector3.up * _singleRollData.RockfallSpawnHeight;
spawnPosition += Vector3.Cross(-targetDirection, Vector3.up).normalized * randomSide;
Instantiate(_singleRollData.RockfallPrefab, spawnPosition, Quaternion.identity, _sandMoleMapController.ParticleInstantiateLocation);
if (_singleRollData.RockfallPrefab)
{
var rockfallCount = (int)(targetDistance / _singleRollData.RockfallInterval);
for (var i = 2; i < rockfallCount; i++)
{
if (!SkillUser)
{
EndSkill(SkillData.Cooldown, actions[0]);
yield break;
}
var randomSide = Random.Range(_singleRollData.RandomSide.x, _singleRollData.RandomSide.y);
var spawnPosition = SkillUser.transform.position
+ -targetDirection * _singleRollData.RockfallInterval * i
+ Vector3.up * _singleRollData.RockfallSpawnHeight;
spawnPosition += Vector3.Cross(-targetDirection, Vector3.up).normalized * randomSide;
Instantiate(_singleRollData.RockfallPrefab, spawnPosition, Quaternion.identity, _sandMoleMapController.ParticleInstantiateLocation);
}
}
elapsedTime = 0f;

View File

@ -392,13 +392,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7b9900c0671da864e910821e6447affc, type: 3}
m_Name:
m_EditorClassIdentifier:
_characterCollider: {fileID: 4832858849328938018}
_spriteRenderer: {fileID: 6274137400612009998}
_particleInstantiateLocation: {fileID: 0}
<MaxHealthPoint>k__BackingField: 0
<CurrentHealthPoint>k__BackingField: 0
_damageInterval: 0.1
_attackedSfxName:
_dieSfxName:
_attackedParticle: {fileID: 0}
_dieParticle: {fileID: 0}
_particleInstantiateLocation: {fileID: 0}
--- !u!114 &-3401764490790336446
MonoBehaviour:
m_ObjectHideFlags: 0

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -19,23 +19,23 @@ PrefabInstance:
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[0]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[1]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[2]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[3]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[4]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalScale.x
value: 6
@ -100,10 +100,6 @@ PrefabInstance:
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: <CurrentHealthPoint>k__BackingField
value: 700
objectReference: {fileID: 0}
- target: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Name
value: Rhinoceros

View File

@ -23,23 +23,23 @@ PrefabInstance:
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[0]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[1]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[2]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[3]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 4159255405813448884, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: '_skillList.Array.data[4]'
value:
objectReference: {fileID: 7464818668275774481, guid: c068e12b504a1ca48bf609ee2724abc8, type: 3}
objectReference: {fileID: 0}
- target: {fileID: 6255916646741457976, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_LocalScale.x
value: 5
@ -104,10 +104,6 @@ PrefabInstance:
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6377054450616127915, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: <CurrentHealthPoint>k__BackingField
value: 700
objectReference: {fileID: 0}
- target: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
propertyPath: m_Name
value: SandMole
@ -229,6 +225,15 @@ MonoBehaviour:
<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

View File

@ -1,5 +1,36 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &193063856128984745
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6657138680337087356}
m_Layer: 0
m_Name: MiniSandMoleSpawn (3)
m_TagString: Untagged
m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6657138680337087356
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 193063856128984745}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5, y: 0, z: -5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8991664057069348477}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &316225229665130246
GameObject:
m_ObjectHideFlags: 0
@ -280,6 +311,37 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &2563095547787055824
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1324592367882867249}
m_Layer: 0
m_Name: MiniSandMoleSpawn (1)
m_TagString: Untagged
m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1324592367882867249
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2563095547787055824}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 5, y: 0, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8991664057069348477}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3576121860620050639
GameObject:
m_ObjectHideFlags: 0
@ -496,6 +558,68 @@ BoxCollider:
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &7225845442489806937
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4946803535834257734}
m_Layer: 0
m_Name: CenterSpawn
m_TagString: Untagged
m_Icon: {fileID: -1412012063857583412, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4946803535834257734
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7225845442489806937}
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: 6960399737772514917}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7331406564017590088
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9046549034752090187}
m_Layer: 0
m_Name: MiniSandMoleSpawn (2)
m_TagString: Untagged
m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &9046549034752090187
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7331406564017590088}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -5, y: 0, z: -5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8991664057069348477}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7619121463401286315
GameObject:
m_ObjectHideFlags: 0
@ -582,6 +706,72 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7661269855599544664
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8991664057069348477}
m_Layer: 0
m_Name: MiniSandMoleSpawns
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8991664057069348477
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7661269855599544664}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2981470058859736985}
- {fileID: 1324592367882867249}
- {fileID: 9046549034752090187}
- {fileID: 6657138680337087356}
m_Father: {fileID: 6960399737772514917}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7883838996347282313
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2981470058859736985}
m_Layer: 0
m_Name: MiniSandMoleSpawn
m_TagString: Untagged
m_Icon: {fileID: 3936346786652291628, guid: 0000000000000000d000000000000000, type: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2981470058859736985
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7883838996347282313}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -5, y: 0, z: 5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8991664057069348477}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8345533875491524569
GameObject:
m_ObjectHideFlags: 0
@ -802,10 +992,16 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 7798505859049167048, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
insertIndex: -1
addedObject: {fileID: 9203013126190605548}
- targetCorrespondingSourceObject: {fileID: 4700527603807157220, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
insertIndex: -1
addedObject: {fileID: 4946803535834257734}
- targetCorrespondingSourceObject: {fileID: 4700527603807157220, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
insertIndex: -1
addedObject: {fileID: 8991664057069348477}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7702874292798655589, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
insertIndex: -1
addedObject: {fileID: 6585123087190923213}
addedObject: {fileID: 4232848145969149048}
m_SourcePrefab: {fileID: 100100000, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
--- !u!4 &1335494345527737213 stripped
Transform:
@ -822,7 +1018,7 @@ GameObject:
m_CorrespondingSourceObject: {fileID: 7702874292798655589, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
m_PrefabInstance: {fileID: 2424043105665738113}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6585123087190923213
--- !u!114 &4232848145969149048
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@ -831,7 +1027,7 @@ MonoBehaviour:
m_GameObject: {fileID: 5424010737098975716}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 45ca5fc4b0d9415ca599aa7cd17f3370, type: 3}
m_Script: {fileID: 11500000, guid: eb656087fe6c652469b29504a37df539, type: 3}
m_Name:
m_EditorClassIdentifier:
PlayerSpawnTransform: {fileID: 7906706039042621278}
@ -841,6 +1037,12 @@ MonoBehaviour:
BGMName:
BossSpawnTransform: {fileID: 6522622582430961898}
BossType: 3
CenterSpawnTransform: {fileID: 4946803535834257734}
MiniSandMoleSpawnTransforms:
- {fileID: 2981470058859736985}
- {fileID: 1324592367882867249}
- {fileID: 9046549034752090187}
- {fileID: 6657138680337087356}
--- !u!4 &5591840841030008137 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7798505859049167048, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
@ -851,6 +1053,11 @@ Transform:
m_CorrespondingSourceObject: {fileID: 8874040642671342955, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
m_PrefabInstance: {fileID: 2424043105665738113}
m_PrefabAsset: {fileID: 0}
--- !u!4 &6960399737772514917 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 4700527603807157220, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}
m_PrefabInstance: {fileID: 2424043105665738113}
m_PrefabAsset: {fileID: 0}
--- !u!4 &7552954649617714894 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5292453453235858255, guid: 02759e0bd03056e499ebce198da0c9d6, type: 3}

View File

@ -0,0 +1,99 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &6575159217317842605
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_Name
value: MiniSingleRoll
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3155538962647367913, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7266951372888583716, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
propertyPath: m_Material
value:
objectReference: {fileID: 2100000, guid: a1e8e71505dd71149a84a361110dac07, type: 2}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
insertIndex: -1
addedObject: {fileID: 6760430575876107212}
m_SourcePrefab: {fileID: 100100000, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
--- !u!114 &4604593881685827721 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 7266951372888583716, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
m_PrefabInstance: {fileID: 6575159217317842605}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0777d029ed3dffa4692f417d4aba19ca, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &5793366936479968295 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
m_PrefabInstance: {fileID: 6575159217317842605}
m_PrefabAsset: {fileID: 0}
--- !u!114 &6760430575876107212
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5793366936479968295}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b30a1dae096e3af44a1792bbc3a2b620, type: 3}
m_Name:
m_EditorClassIdentifier:
SkillData: {fileID: 11400000, guid: b064f624ee1ab8e429a4e2c158f6ae9f, type: 2}
EnableSkill: 1
IsUsingIndicator: 1
Indicator: {fileID: 4604593881685827721}
_isDrawingGizmo: 1

View File

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

View File

@ -0,0 +1,41 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
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: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
m_Name: MiniSandMole
m_EditorClassIdentifier:
mBehaviorSource:
behaviorName: SandMole
behaviorDescription:
mTaskData:
types: []
parentIndex:
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
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
Behavior Tree","Instant":true,"SharedGameObjectbehaviorGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedIntgroup":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolpauseBehavior":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1.07836533,154.29248)"},"ID":8,"Name":"Skill
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-0.5132599,154.740326)"},"ID":9,"Name":"Single
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-155.2381,150)"},"ID":10,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.SelfStun","NodeData":{"Offset":"(4.942749,145.861938)"},"ID":11,"Name":"Self
Stun","Instant":true,"Single_stunDuration":3},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(134.9425,145.861938)"},"ID":12,"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}}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true}]}'
fieldSerializationData:
typeName: []
fieldNameHash:
startIndex:
dataPosition:
unityObjects: []
byteData:
byteDataArray:
Version: 1.7.9

View File

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