회전 베기

This commit is contained in:
Ino 2025-05-09 15:41:22 +09:00
parent 72e17af2bf
commit ef0181395d
7 changed files with 206 additions and 11 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,139 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1350445096495842306
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1350445096495842305}
- component: {fileID: 2691850233177647995}
m_Layer: 0
m_Name: Effect_Hit_Skill_SpinSlash
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1350445096495842305
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1350445096495842306}
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: 6634425797090940437}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2691850233177647995
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1350445096495842306}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 456d2bd1c5c2e5e4b8b948836c4975a4, type: 3}
m_Name:
m_EditorClassIdentifier:
NoUseParticleTime: 1
OffTime: 0.5
e_EffectLocation: 0
--- !u!1001 &4075250217066410284
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 1350445096495842305}
m_Modifications:
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalScale.x
value: 0.25
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalScale.y
value: 0.25
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalScale.z
value: 0.25
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7249675442437269310, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
propertyPath: m_Name
value: FX_Shoot_02_hit
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: dd2b1ac4a32ca184683f15984f30d88f, type: 3}
--- !u!4 &6634425797090940437 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7249675442437269305, guid: dd2b1ac4a32ca184683f15984f30d88f,
type: 3}
m_PrefabInstance: {fileID: 4075250217066410284}
m_PrefabAsset: {fileID: 0}

View File

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

View File

@ -46,14 +46,17 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8086c809b8d173d45be2ca40560a681a, type: 3} m_Script: {fileID: 11500000, guid: 8086c809b8d173d45be2ca40560a681a, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_Pierce: 0 ColliderLayer: Actor
str_HitEffect: m_Pierce: 1
m_ShowTimeOverEffect: 1 str_HitEffect: Effect_Hit_Skill_SpinSlash
m_ShowTimeOverEffect: 0
m_Collider: {fileID: 0} m_Collider: {fileID: 0}
Loop: 15 LoopTime: 3
DelayTime: 0.25 Loop: 0
DelayTime: 0.1
ColliderActiveFrame: 1 ColliderActiveFrame: 1
m_speed: 4 m_firstspeed: 10
m_speed: 2
--- !u!65 &646577785751406902 --- !u!65 &646577785751406902
BoxCollider: BoxCollider:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -148,11 +151,26 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 3795761376887037933, guid: 01d7f969ea087264999d466695415a99,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3966090300889708928, guid: 01d7f969ea087264999d466695415a99,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4297842659697493505, guid: 01d7f969ea087264999d466695415a99, - target: {fileID: 4297842659697493505, guid: 01d7f969ea087264999d466695415a99,
type: 3} type: 3}
propertyPath: m_Name propertyPath: m_Name
value: FX_Whirling Sword value: FX_Whirling Sword
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 4963428307614964137, guid: 01d7f969ea087264999d466695415a99,
type: 3}
propertyPath: m_IsActive
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []

View File

@ -5,7 +5,9 @@ using UnityEngine;
public class Projectile_StopAndColliderControl : ProjectileBase public class Projectile_StopAndColliderControl : ProjectileBase
{ {
public Collider m_Collider; public Collider m_Collider;
[Header("다단히트 갯수")] [Header("다단히트 시간(0 이상일 때 우선 적용")]
public float LoopTime = 0f;
[Header("다단히트 갯수(시간이 0이하일 때 적용)")]
public int Loop = 1; public int Loop = 1;
[Header("충돌박스가 꺼졌다 켜지는 시간(0 == 1프레임)")] [Header("충돌박스가 꺼졌다 켜지는 시간(0 == 1프레임)")]
public float DelayTime = 1f; public float DelayTime = 1f;
@ -26,14 +28,25 @@ public class Projectile_StopAndColliderControl : ProjectileBase
protected IEnumerator Co_Collider() protected IEnumerator Co_Collider()
{ {
for (int i = 0; i < Loop; i++) int loopCount = Loop;
if (LoopTime > 0f)
{
float oneCycleTime = Mathf.Max(DelayTime, Time.deltaTime) + (ColliderActiveFrame / 60f);
loopCount = Mathf.FloorToInt(LoopTime / oneCycleTime);
loopCount = Mathf.Max(loopCount, 1); // 최소 1회는 보장
}
for (int i = 0; i < loopCount; i++)
{ {
m_Collider.enabled = false; m_Collider.enabled = false;
yield return new WaitForSeconds(DelayTime > 0f ? DelayTime : Time.deltaTime); yield return new WaitForSeconds(DelayTime > 0f ? DelayTime : Time.deltaTime);
m_Collider.enabled = true; m_Collider.enabled = true;
for (int j = 0; j < ColliderActiveFrame; j++) for (int j = 0; j < ColliderActiveFrame; j++)
yield return null; yield return null;
} }
m_Collider.enabled = false; m_Collider.enabled = false;
act_End?.Invoke(); act_End?.Invoke();
act_End = null; act_End = null;

View File

@ -3,12 +3,22 @@ using UnityEngine;
public class Skill_SpinSlash : Projectile_StopAndColliderControl public class Skill_SpinSlash : Projectile_StopAndColliderControl
{ {
[Header("처음 이동 속도")]
public float m_firstspeed = 4f;
[Header("이동 속도")] [Header("이동 속도")]
public float m_speed = 2f; public float m_speed = 2f;
bool hitStart;
public override void Set(ProjectileData _data) public override void Set(ProjectileData _data)
{ {
hitStart = false;
_data.eStartPos = eProjectileStartPos.ShooterCenter; _data.eStartPos = eProjectileStartPos.ShooterCenter;
_data.Action_OnHit = hitter =>
{
hitStart = true;
hitter.Attract(transform.position);
};
base.Set(_data); base.Set(_data);
LookAt_ShooterFoward(); LookAt_ShooterFoward();
StartCoroutine(Co_Update()); StartCoroutine(Co_Update());
@ -17,14 +27,22 @@ public class Skill_SpinSlash : Projectile_StopAndColliderControl
IEnumerator Co_Update() IEnumerator Co_Update()
{ {
yield return new WaitForSeconds(0.5f); while (!hitStart)
{
yield return null;
if (DSUtil.CheckNull(m_ProjecTileData.target)) break;
transform.position = Vector3.MoveTowards(transform.position, m_ProjecTileData.target.Get_position(),
m_firstspeed * Time.deltaTime);
}
while (true) while (true)
{ {
yield return null;
if (DSUtil.CheckNull(m_ProjecTileData.target)) break; if (DSUtil.CheckNull(m_ProjecTileData.target)) break;
transform.position = Vector3.MoveTowards(transform.position, m_ProjecTileData.target.Get_position(), transform.position = Vector3.MoveTowards(transform.position, m_ProjecTileData.target.Get_position(),
m_speed * Time.deltaTime); m_speed * Time.deltaTime);
yield return null;
} }
} }
} }