#17 모래두더지 가시 일제 사격 스킬(GateOfSpike) 추가
+ 고정된 싸이클의 BehaviorTree로 변경 + ProjectileController로직을 SphereCast -> OverlapSphereNonAlloc으로 변경 + GateOfSpikes 관련 파티클 추가 + GateOfSpike 클래스는 단일 오브젝트 컨트롤러
This commit is contained in:
parent
cc382747f0
commit
d27ac0918b
@ -29,8 +29,8 @@ namespace BlueWater
|
||||
[Title("충돌체 설정")]
|
||||
[SerializeField, Tooltip("Sphere Collider가 없는 경우, 기본 충돌 크기(반지름)"), ShowIf("@!_sphereCollider")]
|
||||
private float _colliderRadius = 1f;
|
||||
[SerializeField, Range(0f, 1f), Tooltip("타겟보다 해당 값만큼 떨어진 위치에서 충돌")]
|
||||
private float _collideOffset;
|
||||
// [SerializeField, Range(0f, 1f), Tooltip("타겟보다 해당 값만큼 떨어진 위치에서 충돌")]
|
||||
// private float _collideOffset;
|
||||
|
||||
[SerializeField]
|
||||
private int _attackDamage;
|
||||
@ -43,23 +43,29 @@ namespace BlueWater
|
||||
|
||||
[SerializeField, ShowIf("@_useAutoDestroy")]
|
||||
private float _autoDestroyTime = 10f;
|
||||
public float SphereRadius { get; private set; }
|
||||
|
||||
private float _detectionDistance;
|
||||
private Collider[] _hitColliders;
|
||||
|
||||
public Action OnHitAction;
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
var radius = _sphereCollider ? _sphereCollider.radius : _colliderRadius;
|
||||
if (SphereRadius == 0f) return;
|
||||
|
||||
var direction = _rigidbody ? _rigidbody.linearVelocity.normalized : transform.forward;
|
||||
|
||||
Gizmos.color = Color.red;
|
||||
Gizmos.DrawWireSphere(transform.position, radius);
|
||||
Gizmos.DrawWireSphere(transform.position, SphereRadius);
|
||||
Gizmos.DrawLine(transform.position, transform.position + direction * _detectionDistance);
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
SphereRadius = _sphereCollider ? _sphereCollider.radius : _colliderRadius;
|
||||
_hitColliders = new Collider[1];
|
||||
|
||||
if (_useAutoDestroy)
|
||||
{
|
||||
Destroy(gameObject, _autoDestroyTime);
|
||||
@ -83,15 +89,15 @@ namespace BlueWater
|
||||
{
|
||||
transform.rotation = Quaternion.LookRotation(_rigidbody.linearVelocity);
|
||||
}
|
||||
|
||||
var radius = _sphereCollider ? _sphereCollider.radius : _colliderRadius;
|
||||
var direction = _rigidbody.linearVelocity.normalized;
|
||||
|
||||
//var direction = _rigidbody.linearVelocity.normalized;
|
||||
|
||||
_detectionDistance = _rigidbody.linearVelocity.magnitude * Time.deltaTime;
|
||||
if (!Physics.SphereCast(transform.position, radius, direction, out var raycastHit, _detectionDistance,
|
||||
_targetLayer, QueryTriggerInteraction.Collide)) return;
|
||||
var hitCount = Physics.OverlapSphereNonAlloc(transform.position, SphereRadius, _hitColliders, _targetLayer, QueryTriggerInteraction.Collide);
|
||||
if (hitCount == 0) return;
|
||||
|
||||
transform.position = raycastHit.point + raycastHit.normal * _collideOffset;
|
||||
// transform.position = raycastHit.point + raycastHit.normal * _collideOffset;
|
||||
var hitCollider = _hitColliders[0];
|
||||
var trailParticles = GetComponentsInChildren<ParticleSystem>();
|
||||
foreach (var element in trailParticles)
|
||||
{
|
||||
@ -101,13 +107,11 @@ namespace BlueWater
|
||||
Destroy(element.gameObject, 2f);
|
||||
}
|
||||
|
||||
GameObject impactParticle = null;
|
||||
var impactParticle = Instantiate(ImpactParticle, transform.position, Quaternion.identity);
|
||||
// TODO : HitBox가 레이어로 설정되어있으도, 부모 객체 Player를 계속 가져오는 버그가 있음
|
||||
var hitTransform = raycastHit.transform;
|
||||
var iDamageable = hitTransform.GetComponentInParent<IDamageable>();
|
||||
var iDamageable = hitCollider.GetComponentInParent<IDamageable>();
|
||||
if (iDamageable != null && iDamageable.CanDamage())
|
||||
{
|
||||
impactParticle = Instantiate(ImpactParticle, transform.position, Quaternion.FromToRotation(Vector3.up, raycastHit.normal));
|
||||
iDamageable.TakeDamage(_attackDamage);
|
||||
OnHitAction?.Invoke();
|
||||
}
|
||||
|
123
Assets/02.Scripts/Prop/GateOfSpike.cs
Normal file
123
Assets/02.Scripts/Prop/GateOfSpike.cs
Normal file
@ -0,0 +1,123 @@
|
||||
using System.Collections;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Rendering.Universal;
|
||||
|
||||
namespace BlueWater
|
||||
{
|
||||
public class GateOfSpike : MonoBehaviour
|
||||
{
|
||||
[Title("컴포넌트")]
|
||||
[SerializeField, Required]
|
||||
private ProjectileController _projectileObject;
|
||||
|
||||
[SerializeField, Required]
|
||||
private Rigidbody _rigidbody;
|
||||
|
||||
[SerializeField, Required]
|
||||
private SphereCollider _sphereCollider;
|
||||
|
||||
[SerializeField, Required]
|
||||
private DecalProjector _indicator;
|
||||
|
||||
[Title("표시기 설정")]
|
||||
[SerializeField]
|
||||
private bool _isUsingIndicator = true;
|
||||
|
||||
[Title("설정")]
|
||||
[SerializeField]
|
||||
private float _maxHeight = 10f;
|
||||
|
||||
[SerializeField]
|
||||
private Vector2 _randomDuration = new(1f, 1.5f);
|
||||
|
||||
private bool _isInitialized;
|
||||
private Vector3 _destination;
|
||||
|
||||
// Hashes
|
||||
private static readonly int _fillHash = Shader.PropertyToID("_Fill");
|
||||
|
||||
private IEnumerator Start()
|
||||
{
|
||||
yield return new WaitUntil(() => _isInitialized);
|
||||
|
||||
BasicSetting();
|
||||
ShowIndicator();
|
||||
|
||||
var startPosition = transform.position;
|
||||
var controlPoint = startPosition + Vector3.up * _maxHeight;
|
||||
var elapsedTime = 0f;
|
||||
var duration = Random.Range(_randomDuration.x, _randomDuration.y);
|
||||
|
||||
while (elapsedTime < duration)
|
||||
{
|
||||
if (!_projectileObject)
|
||||
{
|
||||
HideIndicator();
|
||||
Destroy(gameObject, 3.5f);
|
||||
yield break;
|
||||
}
|
||||
|
||||
elapsedTime += Time.deltaTime;
|
||||
var t = elapsedTime / duration;
|
||||
|
||||
if (_isUsingIndicator && _indicator)
|
||||
{
|
||||
var fillValue = Mathf.Lerp(0f, 1f, t);
|
||||
if (t == 0f)
|
||||
{
|
||||
fillValue = 0f;
|
||||
}
|
||||
_indicator.material.SetFloat(_fillHash, fillValue);
|
||||
}
|
||||
|
||||
// 베지어 곡선을 사용하여 위치 계산
|
||||
var position = Mathf.Pow(1 - t, 2) * startPosition +
|
||||
2 * (1 - t) * t * controlPoint +
|
||||
Mathf.Pow(t, 2) * _destination;
|
||||
|
||||
_projectileObject.transform.position = position;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
_indicator.material.SetFloat(_fillHash, 1f);
|
||||
HideIndicator();
|
||||
|
||||
Destroy(gameObject, 3.5f);
|
||||
}
|
||||
|
||||
public void Initialize(Vector3 destination)
|
||||
{
|
||||
_destination = destination;
|
||||
_isInitialized = true;
|
||||
}
|
||||
|
||||
private void BasicSetting()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.scaleMode = DecalScaleMode.InheritFromHierarchy;
|
||||
_indicator.material = new Material(_indicator.material);
|
||||
_indicator.material.SetFloat(_fillHash, 0f);
|
||||
var indicatorScale = _projectileObject.SphereRadius * 2f;
|
||||
_indicator.transform.localScale = Vector3.one * indicatorScale;
|
||||
_indicator.transform.position = _destination + Vector3.up * _sphereCollider.radius;
|
||||
}
|
||||
|
||||
private void HideIndicator()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.enabled = false;
|
||||
_indicator.material.SetFloat(_fillHash, 0);
|
||||
}
|
||||
|
||||
private void ShowIndicator()
|
||||
{
|
||||
if (!_isUsingIndicator || !_indicator) return;
|
||||
|
||||
_indicator.material.SetFloat(_fillHash, 0);
|
||||
_indicator.enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/02.Scripts/Prop/GateOfSpike.cs.meta
Normal file
2
Assets/02.Scripts/Prop/GateOfSpike.cs.meta
Normal file
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e2ef61c9cb12a247b29ca9198e5576f
|
@ -21,4 +21,5 @@ MonoBehaviour:
|
||||
<SkillDataList>k__BackingField:
|
||||
- {fileID: 6760430575876107212, guid: a09fc16b8b3c86a4e88ac3f049b5fd89, type: 3}
|
||||
- {fileID: 2789312915140829590, guid: 8f4a84b8b6727c64ea203026334a60c2, type: 3}
|
||||
- {fileID: -8817476587284398613, guid: 1ac17d81b98c9fb488ac24d8e2291955, type: 3}
|
||||
<MoveSpeed>k__BackingField: 3
|
||||
|
@ -0,0 +1,31 @@
|
||||
%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: 8216310984547f644aedbd55c040f3d6, type: 3}
|
||||
m_Name: GateOfSpikesData
|
||||
m_EditorClassIdentifier:
|
||||
<Name>k__BackingField: GateOfSpikes
|
||||
<DisplayName>k__BackingField: "\uAC8C\uC774\uD2B8 \uC624\uBE0C \uC2A4\uD30C\uC774\uD06C"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 1
|
||||
<Cooldown>k__BackingField: 10
|
||||
<Radius>k__BackingField: 5
|
||||
<CastingTime>k__BackingField: 0
|
||||
<Duration>k__BackingField: 0
|
||||
<TargetLayer>k__BackingField:
|
||||
serializedVersion: 2
|
||||
m_Bits: 2496
|
||||
<SpikePrefab>k__BackingField: {fileID: 9002322086633083442, guid: 90f6fd643c61df44a908c9d621fd7827, type: 3}
|
||||
<SpikeCount>k__BackingField: 10
|
||||
<MinDistanceBetweenAttacks>k__BackingField: 1
|
||||
<GroundLayer>k__BackingField:
|
||||
serializedVersion: 2
|
||||
m_Bits: 64
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aa24ed40f29d49f48a713df4d1b119f9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -29,7 +29,7 @@ MonoBehaviour:
|
||||
<RollSpeed>k__BackingField: 40
|
||||
<PushPower>k__BackingField: 8
|
||||
<AirJumpForce>k__BackingField: 3
|
||||
<BounceBackForce>k__BackingField: 150
|
||||
<BounceBackForce>k__BackingField: 200
|
||||
<CameraShakingPower>k__BackingField: 5
|
||||
<CameraShakingDuration>k__BackingField: 1
|
||||
<RockfallPrefab>k__BackingField: {fileID: 403575580428700795, guid: 28e4d21533af9b949a4cb910f2d4fa4c, type: 3}
|
||||
|
@ -0,0 +1,20 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
{
|
||||
[CreateAssetMenu(fileName = "GateOfSpikesData", menuName = "ScriptableObjects/Skills/SandMole/GateOfSpikesData", order = (int)SandMoleSkill.GateOfSpikes)]
|
||||
public class GateOfSpikesData : SkillData
|
||||
{
|
||||
[field: SerializeField]
|
||||
public GameObject SpikePrefab { get; private set; }
|
||||
|
||||
[field: SerializeField]
|
||||
public int SpikeCount { get; private set; } = 10;
|
||||
|
||||
[field: SerializeField]
|
||||
public float MinDistanceBetweenAttacks { get; private set; } = 2f;
|
||||
|
||||
[field: SerializeField]
|
||||
public LayerMask GroundLayer { get; private set; }
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8216310984547f644aedbd55c040f3d6
|
@ -18,7 +18,7 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
public float AirJumpForce { get; private set; } = 3f;
|
||||
|
||||
[field: SerializeField, Tooltip("벽에 부딪혔을 때, 밀려나는 힘")]
|
||||
public float BounceBackForce { get; private set; } = 150f;
|
||||
public float BounceBackForce { get; private set; } = 200f;
|
||||
|
||||
[field: SerializeField]
|
||||
public float CameraShakingPower { get; private set; } = 5f;
|
||||
|
106
Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs
Normal file
106
Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs
Normal file
@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using BlueWater.Maps;
|
||||
using BlueWater.Utility;
|
||||
using UnityEngine;
|
||||
using Random = UnityEngine.Random;
|
||||
|
||||
namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
{
|
||||
public class GateOfSpikes : BaseSkill
|
||||
{
|
||||
private GateOfSpikesData _gateOfSpikesData;
|
||||
private SandMole _sandMole;
|
||||
private AnimationController _animationController;
|
||||
private Collider _userCollider;
|
||||
private Collider _targetCollider;
|
||||
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.ParticleInstantiateLocation;
|
||||
}
|
||||
_gateOfSpikesData = (GateOfSpikesData)SkillData;
|
||||
_spikes = new List<Vector3>(_gateOfSpikesData.SpikeCount);
|
||||
|
||||
base.BasicSetting();
|
||||
}
|
||||
|
||||
public override void ActivateSkill(params Action[] actions)
|
||||
{
|
||||
Utils.StartUniqueCoroutine(this, ref SkillCoroutineInstance, SkillCoroutine(actions));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
EndSkill(0, actions[0]);
|
||||
yield break;
|
||||
}
|
||||
|
||||
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;
|
||||
var spikeSpawnPosition = _userCollider.bounds.center;
|
||||
var validAttackPositions = new List<Vector3>();
|
||||
|
||||
while (validAttackPositions.Count < _gateOfSpikesData.SpikeCount)
|
||||
{
|
||||
var randomCircle = Random.insideUnitCircle * _gateOfSpikesData.Radius;
|
||||
var randomPosition = targetCenterPosition + new Vector3(randomCircle.x, 0, randomCircle.y);
|
||||
|
||||
if (!IsPositionValid(randomPosition)) continue;
|
||||
|
||||
validAttackPositions.Add(randomPosition);
|
||||
_spikes.Add(randomPosition);
|
||||
var spike = Instantiate(_gateOfSpikesData.SpikePrefab, spikeSpawnPosition, Quaternion.identity,
|
||||
_particleInstantiateLocation).GetComponent<GateOfSpike>();
|
||||
spike.GetComponentInChildren<ProjectileController>().Initialize(_gateOfSpikesData.Damage, _gateOfSpikesData.TargetLayer);
|
||||
spike.Initialize(randomPosition);
|
||||
}
|
||||
|
||||
EndSkill(SkillData.Cooldown, actions[0]);
|
||||
}
|
||||
|
||||
private bool IsPositionValid(Vector3 position)
|
||||
{
|
||||
var isOnGroundLayer = Physics.Raycast(position + Vector3.up, Vector3.down, 5f, _gateOfSpikesData.GroundLayer);
|
||||
|
||||
return isOnGroundLayer && _spikes.All(element => !(Vector3.Distance(position, element) < _gateOfSpikesData.MinDistanceBetweenAttacks));
|
||||
}
|
||||
|
||||
private void EndSkill(float cooldown, Action action)
|
||||
{
|
||||
Utils.EndUniqueCoroutine(this, ref SkillCoroutineInstance);
|
||||
|
||||
_animationController.SetAnimationParameter("skillIndex", (int)SandMoleSkill.None);
|
||||
action?.Invoke();
|
||||
|
||||
Utils.StartUniqueCoroutine(this, ref CooldownCoroutineInstance,Utils.CoolDownCoroutine(cooldown, EndCooldown));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2aa55bbfb8ed76847aa19df9556f0bd9
|
@ -12,8 +12,6 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
private SandMole _sandMole;
|
||||
private AnimationController _animationController;
|
||||
private Collider _targetCollider;
|
||||
private float _colliderRadius;
|
||||
private float _attackRadius;
|
||||
private Transform _particleInstantiateLocation;
|
||||
|
||||
protected override void BasicSetting()
|
||||
@ -45,10 +43,8 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
yield return StartCoroutine(_animationController.WaitForAnimationToRun("MultiThrowSpikes",
|
||||
success => animationStarted = success));
|
||||
|
||||
print("1");
|
||||
if (!animationStarted || !SkillUser)
|
||||
{
|
||||
print("2");
|
||||
EndSkill(0, actions[0]);
|
||||
yield break;
|
||||
}
|
||||
@ -59,15 +55,12 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
var waitForSeconds = new WaitForSeconds(_multiThrowSpikesData.SpikeInterval);
|
||||
for (var i = 0; i < _multiThrowSpikesData.SpikeCount; i++)
|
||||
{
|
||||
print("3");
|
||||
if (!SkillUser || !_targetCollider)
|
||||
{
|
||||
print("4");
|
||||
EndSkill(SkillData.Cooldown, actions[0]);
|
||||
yield break;
|
||||
}
|
||||
|
||||
// 실시간으로 일정 간격으로 Target의 위치를 받아와서 방향을 맞춰서 발사한다.
|
||||
|
||||
var targetCenterPosition = _targetCollider.bounds.center;
|
||||
startPosition.y = targetCenterPosition.y;
|
||||
var targetVector = targetCenterPosition - startPosition;
|
||||
|
@ -117,8 +117,17 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
|
||||
HideIndicator();
|
||||
|
||||
while (true)
|
||||
elapsedTime = 0f;
|
||||
var isCrashedWall = false;
|
||||
while (!isCrashedWall)
|
||||
{
|
||||
if (elapsedTime >= 5f)
|
||||
{
|
||||
print("무한 루프 버그");
|
||||
EndSkill(SkillData.Cooldown, actions[0]);
|
||||
yield break;
|
||||
}
|
||||
|
||||
if (!SkillUser)
|
||||
{
|
||||
EndSkill(SkillData.Cooldown, actions[0]);
|
||||
@ -129,7 +138,6 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
var moveDistance = _singleRollData.RollSpeed * Time.fixedDeltaTime;
|
||||
var hitCount = Physics.OverlapSphereNonAlloc(skillUserPosition, _attackRadius, HitColliders,
|
||||
_singleRollData.TargetLayer, QueryTriggerInteraction.Collide);
|
||||
var isCrashedWall = false;
|
||||
|
||||
for (var i = 0; i < hitCount; i++)
|
||||
{
|
||||
@ -161,33 +169,28 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
|
||||
: Quaternion.Euler(0, 90, 0) * transform.forward;
|
||||
iPhysicMovable.AddForce(addForceDirection * _singleRollData.PushPower, ForceMode.Impulse);
|
||||
}
|
||||
|
||||
if (isCrashedWall)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
_userRigidbody.MovePosition(skillUserPosition + targetDirection * moveDistance);
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
EndSkill(SkillData.Cooldown, actions[0]);
|
||||
}
|
||||
|
@ -0,0 +1,194 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &174131517073896262
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5415367293591160993}
|
||||
- component: {fileID: 4712250527758562314}
|
||||
m_Layer: 0
|
||||
m_Name: Indicator
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5415367293591160993
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 174131517073896262}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 9201249543235775511}
|
||||
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
|
||||
--- !u!114 &4712250527758562314
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 174131517073896262}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0777d029ed3dffa4692f417d4aba19ca, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 2100000, guid: 0b52d77e4d2f39e4096329a5a410c6a3, type: 2}
|
||||
m_DrawDistance: 1000
|
||||
m_FadeScale: 0.9
|
||||
m_StartAngleFade: 180
|
||||
m_EndAngleFade: 180
|
||||
m_UVScale: {x: 1, y: 1}
|
||||
m_UVBias: {x: 0, y: 0}
|
||||
m_DecalLayerMask: 1
|
||||
m_ScaleMode: 1
|
||||
m_Offset: {x: 0, y: 0, z: 0.5}
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_FadeFactor: 1
|
||||
--- !u!1 &9002322086633083442
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9201249543235775511}
|
||||
- component: {fileID: 2003526957314121454}
|
||||
m_Layer: 0
|
||||
m_Name: GateOfSpike
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &9201249543235775511
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9002322086633083442}
|
||||
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: 2832061815166961833}
|
||||
- {fileID: 5415367293591160993}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &2003526957314121454
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9002322086633083442}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8e2ef61c9cb12a247b29ca9198e5576f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_projectileObject: {fileID: 6564172142274022919}
|
||||
_rigidbody: {fileID: 346374874002928456}
|
||||
_sphereCollider: {fileID: 2854288025065569428}
|
||||
_indicator: {fileID: 4712250527758562314}
|
||||
_isUsingIndicator: 1
|
||||
_maxHeight: 10
|
||||
_randomDuration: {x: 1, y: 1.5}
|
||||
--- !u!1001 &5196771495479790409
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 9201249543235775511}
|
||||
m_Modifications:
|
||||
- target: {fileID: 194276104676398060, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: GateOfSpikeParticle
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
--- !u!54 &346374874002928456 stripped
|
||||
Rigidbody:
|
||||
m_CorrespondingSourceObject: {fileID: 5534983560125118465, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
m_PrefabInstance: {fileID: 5196771495479790409}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &2832061815166961833 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 8021796126892704736, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
m_PrefabInstance: {fileID: 5196771495479790409}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!135 &2854288025065569428 stripped
|
||||
SphereCollider:
|
||||
m_CorrespondingSourceObject: {fileID: 8035217722497169373, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
m_PrefabInstance: {fileID: 5196771495479790409}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &6564172142274022919 stripped
|
||||
MonoBehaviour:
|
||||
m_CorrespondingSourceObject: {fileID: 1370849024704300366, guid: f9a780cf3ea5f1449a2a03f4f92b89dc, type: 3}
|
||||
m_PrefabInstance: {fileID: 5196771495479790409}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7d160672a84624441af068504bf1b8c9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 90f6fd643c61df44a908c9d621fd7827
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,109 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &194276104676398060
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8021796126892704736}
|
||||
- component: {fileID: 5534983560125118465}
|
||||
- component: {fileID: 8035217722497169373}
|
||||
- component: {fileID: 1370849024704300366}
|
||||
m_Layer: 0
|
||||
m_Name: GateOfSpikeParticle
|
||||
m_TagString: Missile
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &8021796126892704736
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 194276104676398060}
|
||||
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: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!54 &5534983560125118465
|
||||
Rigidbody:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 194276104676398060}
|
||||
serializedVersion: 4
|
||||
m_Mass: 1
|
||||
m_Drag: 0
|
||||
m_AngularDrag: 0
|
||||
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: 0
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 1
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!135 &8035217722497169373
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 194276104676398060}
|
||||
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_Radius: 0.5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1370849024704300366
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 194276104676398060}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7d160672a84624441af068504bf1b8c9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_rigidbody: {fileID: 5534983560125118465}
|
||||
_sphereCollider: {fileID: 8035217722497169373}
|
||||
_projectilePrefab: {fileID: 1339409385940702124, guid: 54af6d1c262ce644085eb5fcb3bc84e5, type: 3}
|
||||
_muzzleParticle: {fileID: 8379670427772074999, guid: 82c2f5f04b06a78449817259830635fe, type: 3}
|
||||
<ImpactParticle>k__BackingField: {fileID: 4957782242376068896, guid: 02c25e70f96b2a34c92ae40dc6e32c35, type: 3}
|
||||
_colliderRadius: 0.25
|
||||
_collideOffset: 0
|
||||
_attackDamage: 1
|
||||
_targetLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 2496
|
||||
_useAutoDestroy: 1
|
||||
_autoDestroyTime: 10
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f9a780cf3ea5f1449a2a03f4f92b89dc
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 54af6d1c262ce644085eb5fcb3bc84e5
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -50,7 +50,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -4953,7 +4953,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -9856,7 +9856,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -14774,7 +14774,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -19695,7 +19695,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -24598,7 +24598,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
@ -29510,7 +29510,7 @@ ParticleSystem:
|
||||
emitterVelocityMode: 0
|
||||
looping: 0
|
||||
prewarm: 0
|
||||
playOnAwake: 0
|
||||
playOnAwake: 1
|
||||
useUnscaledTime: 0
|
||||
autoRandomSeed: 1
|
||||
startDelay:
|
||||
|
@ -0,0 +1,91 @@
|
||||
%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: GateOfSpikes
|
||||
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}
|
||||
- target: {fileID: 8663005856679327762, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: -8817476587284398613}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
|
||||
--- !u!1 &5793366936479968295 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 817830973935461002, guid: 1e5a4659704853944abea5a17e13cf6a, type: 3}
|
||||
m_PrefabInstance: {fileID: 6575159217317842605}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &-8817476587284398613
|
||||
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: 2aa55bbfb8ed76847aa19df9556f0bd9, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
SkillData: {fileID: 11400000, guid: aa24ed40f29d49f48a713df4d1b119f9, type: 2}
|
||||
EnableSkill: 1
|
||||
IsUsingIndicator: 0
|
||||
Indicator: {fileID: 0}
|
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1ac17d81b98c9fb488ac24d8e2291955
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -26,15 +26,23 @@ MonoBehaviour:
|
||||
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.UntilSuccess","NodeData":{"Offset":"(-4.999878,154.166809)"},"ID":9,"Name":"Until
|
||||
Success","Instant":true,"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.RandomSelector","NodeData":{"Offset":"(-0.8695679,146.086731)"},"ID":10,"Name":"Random
|
||||
Selector","Instant":true,"Int32seed":0,"BooleanuseSeed":false,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-665.4279,148.733643)"},"ID":11,"Name":"Single
|
||||
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Conditionals.CanSkill","NodeData":{"Offset":"(-150,150)"},"ID":12,"Name":"Can
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(0,150)"},"ID":13,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(154.705811,153.681122)"},"ID":14,"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.Sequence","NodeData":{"Offset":"(-45.71466,160)"},"ID":15,"Name":"Multi
|
||||
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Conditionals.CanSkill","NodeData":{"Offset":"(-150,150)"},"ID":16,"Name":"Can
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(0,150)"},"ID":17,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(150,150)"},"ID":18,"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}}]}]}]}]}]}]}]},"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}]}'
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-1258.3335,448.095245)"},"ID":9,"Name":"Multi
|
||||
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-78.12497,150)"},"ID":10,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.87503,150)"},"ID":11,"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.Sequence","NodeData":{"Offset":"(-931.5471,452.381)"},"ID":12,"Name":"Single
|
||||
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-95.23809,150)"},"ID":13,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.37249,153.681122)"},"ID":14,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"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.Sequence","NodeData":{"Offset":"(-616.0723,449.166626)"},"ID":15,"Name":"Multi
|
||||
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-71.4286,150)"},"ID":16,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(78.571434,150)"},"ID":17,"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.Sequence","NodeData":{"Offset":"(9.765897,452.758667)"},"ID":18,"Name":"Multi
|
||||
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-383.3333,150)"},"ID":19,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-233.333313,150)"},"ID":20,"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-84.2857,148.095215)"},"ID":21,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(65.71442,148.095215)"},"ID":22,"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(222.6831,147.804932)"},"ID":23,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(372.682617,147.804932)"},"ID":24,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":4},"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.Sequence","NodeData":{"Offset":"(624.928467,449.4253)"},"ID":25,"Name":"Gate
|
||||
Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-73.52939,150)"},"ID":26,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(76.47061,150)"},"ID":27,"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.Sequence","NodeData":{"Offset":"(927.4391,446.111084)"},"ID":28,"Name":"Multi
|
||||
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-70,150)"},"ID":29,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":30,"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.Sequence","NodeData":{"Offset":"(1264.14648,453.97522)"},"ID":31,"Name":"Single
|
||||
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":32,"Name":"Activate
|
||||
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":33,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"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:
|
||||
|
Loading…
Reference in New Issue
Block a user