Commit 7b447510 authored by 15김민규's avatar 15김민규

거미 구현. 소환한 후 발견하면 지속적으로 따라옴. 어택 관련 이슈나 피격, 디버프를 만질 예정.

parent aa6e6da0
This diff is collapsed.
fileFormatVersion: 2
guid: c8563e7de963bcc4a90cafd485471e9b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
......@@ -5,7 +5,7 @@ AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: melee
m_Name: GroundMelee
serializedVersion: 5
m_AnimatorParameters:
- m_Name: TrackTrigger
......@@ -146,6 +146,27 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101325659652078070
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102455672269219010}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.516129
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101374430603555350
AnimatorStateTransition:
m_ObjectHideFlags: 1
......@@ -287,6 +308,27 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &1101891476493562990
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 1102455672269219010}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.516129
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &1102078500202870446
AnimatorState:
serializedVersion: 5
......
fileFormatVersion: 2
guid: 3277ff2aa5f84f945815b90b5dc1295c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!74 &7400000
AnimationClip:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: Spider Idle
serializedVersion: 6
m_Legacy: 0
m_Compressed: 0
m_UseHighQualityCurve: 1
m_RotationCurves: []
m_CompressedRotationCurves: []
m_EulerCurves: []
m_PositionCurves: []
m_ScaleCurves: []
m_FloatCurves: []
m_PPtrCurves:
- curve:
- time: 0
value: {fileID: 21300000, guid: 3f4a1ae9be64d9f46b0fd7fbffeb58a4, type: 3}
attribute: m_Sprite
path:
classID: 212
script: {fileID: 0}
m_SampleRate: 60
m_WrapMode: 0
m_Bounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 0, y: 0, z: 0}
m_ClipBindingConstant:
genericBindings:
- serializedVersion: 2
path: 0
attribute: 0
script: {fileID: 0}
typeID: 212
customType: 23
isPPtrCurve: 1
pptrCurveMapping:
- {fileID: 21300000, guid: 3f4a1ae9be64d9f46b0fd7fbffeb58a4, type: 3}
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 0.016666668
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
m_LoopBlendPositionXZ: 0
m_KeepOriginalOrientation: 0
m_KeepOriginalPositionY: 1
m_KeepOriginalPositionXZ: 0
m_HeightFromFeet: 0
m_Mirror: 0
m_EditorCurves: []
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_GenerateMotionCurves: 0
m_Events: []
fileFormatVersion: 2
guid: e38ac228fc296204b80018c3350e6b3d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
스테이지,ID,이름,드랍하지 않음,생명석 1개,생명석 2개,생명석 3개,생명석 4개,생명석 5개,금 포션,자수정 포션,습작 아이템,범작,수작,걸작 아이템,습작 애드온,범작,수작,걸작 애드온
고대유적,,,,,,,,,,,,,,,,,,
고대유적,42,전갈,7,4,1,0,0,0,0,0,2,0,0,0,2,1,0,0
고대유적,101,고블린,7,4,1,0,0,0,0,0,2,0,0,0,2,1,0,0
고대유적,102,고블린 보초병,4,3,0,0,0,0,0,0,0,0,0,0,1,0,0,0
고대유적,103,날쌘 고블린,3,5,1,0,0,0,0,0,2,0,0,0,2,1,0,0
......@@ -17,7 +16,7 @@
고대유적,1230,새끼 박쥐,5,4,0,0,0,0,0,0,1,0,0,0,2,0,0,0
고대유적,115,엘리게이터-1,1,4,6,3,1,0,2,0,5,5,3,1,3,1,1,0
고대유적,116,엘리게이터-2,1,4,6,3,1,0,2,0,5,5,3,1,3,1,1,0
고대유적,117,테스트용데이터,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0
고대유적,42,테스트거미,7,4,1,0,0,0,0,0,2,0,0,0,2,1,0,0
고대유적,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyPhysics : MonoBehaviour {
}
......@@ -61,7 +61,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!1 &1734061800721222
GameObject:
m_ObjectHideFlags: 1
......@@ -286,7 +286,7 @@ MonoBehaviour:
m_GameObject: {fileID: 1225288737757304}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2d73d07fdab522c4aa045e1cb6a92e8c, type: 3}
m_Script: {fileID: 11500000, guid: a11d071a77ab21c48882c6c6e4db8f17, type: 3}
m_Name:
m_EditorClassIdentifier:
monsterID: 101
......@@ -294,11 +294,11 @@ MonoBehaviour:
weight: 15
patrolRange: 3
noticeRange: 2
attackRange: 1.2
patrolSpeed: 1
trackSpeed: 2.5
knockbackPercentage:
- 0.5
attackRange: 1.2
--- !u!114 &114173716467154830
MonoBehaviour:
m_ObjectHideFlags: 1
......@@ -373,7 +373,7 @@ SpriteRenderer:
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: -2078941185
m_SortingLayer: 6
m_SortingLayer: 7
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 71335108d30aa0e4a90179a09895440e, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
......
......@@ -19,25 +19,56 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 4804976410232030}
- component: {fileID: 212906216626823524}
- component: {fileID: 50615514765813310}
- component: {fileID: 50573848117970958}
- component: {fileID: 61188111102399610}
- component: {fileID: 95600343560029758}
- component: {fileID: 114425347246421446}
m_Layer: 0
m_Name: DummyScorpion
m_Layer: 16
m_Name: Spider
m_TagString: Enemy
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1923610854882692
--- !u!1 &1822069857481414
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 6
m_Component:
- component: {fileID: 4205286087293746}
- component: {fileID: 114337624805266014}
m_Layer: 0
m_Name: HPBar
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1860030746010208
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 6
m_Component:
- component: {fileID: 4001151502382822}
- component: {fileID: 212993065858080250}
- component: {fileID: 95156341909549574}
- component: {fileID: 114803474034076246}
m_Layer: 0
m_Name: Body
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1923610854882692
GameObject:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 6
m_Component:
- component: {fileID: 4370838883948786}
- component: {fileID: 61019308264186112}
- component: {fileID: 114106922099255344}
......@@ -48,17 +79,44 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4001151502382822
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1860030746010208}
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_Children:
- {fileID: 4370838883948786}
m_Father: {fileID: 4804976410232030}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4205286087293746
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1822069857481414}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 2, y: 2, z: 1}
m_Children: []
m_Father: {fileID: 4804976410232030}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4370838883948786
Transform:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1923610854882692}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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_Children: []
m_Father: {fileID: 4804976410232030}
m_Father: {fileID: 4001151502382822}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4804976410232030
......@@ -68,21 +126,22 @@ Transform:
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1346522711063220}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 7.2689643, y: 1.8663561, z: 0}
m_LocalPosition: {x: 5, y: 1, z: 0}
m_LocalScale: {x: 0.5, y: 0.5, z: 1}
m_Children:
- {fileID: 4370838883948786}
- {fileID: 4001151502382822}
- {fileID: 4205286087293746}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!50 &50615514765813310
--- !u!50 &50573848117970958
Rigidbody2D:
serializedVersion: 4
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1346522711063220}
m_BodyType: 0
m_BodyType: 1
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
......@@ -94,31 +153,31 @@ Rigidbody2D:
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 4
m_Constraints: 3
--- !u!61 &61019308264186112
BoxCollider2D:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1923610854882692}
m_Enabled: 0
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 1
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: -2.21024, y: 0.47439384}
m_Offset: {x: -0.00001335144, y: 0.00009530783}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0, y: 0}
oldSize: {x: 0, y: 0}
newSize: {x: 0, y: 0}
adaptiveTilingThreshold: 0
pivot: {x: 0.5, y: 0.5}
oldSize: {x: 6.64, y: 5.48}
newSize: {x: 6.64, y: 5.48}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 5.42048, y: 3.3288422}
m_Size: {x: 1.2499847, y: 1.250398}
m_EdgeRadius: 0
--- !u!61 &61188111102399610
BoxCollider2D:
......@@ -128,11 +187,11 @@ BoxCollider2D:
m_GameObject: {fileID: 1346522711063220}
m_Enabled: 1
m_Density: 1
m_Material: {fileID: 0}
m_Material: {fileID: 6200000, guid: 90e689a435f304c469db49daef28ed89, type: 2}
m_IsTrigger: 0
m_UsedByEffector: 0
m_UsedByComposite: 0
m_Offset: {x: 0, y: 0}
m_Offset: {x: 0.004562378, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.5}
......@@ -143,18 +202,18 @@ BoxCollider2D:
adaptiveTiling: 0
m_AutoTiling: 0
serializedVersion: 2
m_Size: {x: 6.64, y: 5.48}
m_Size: {x: 1.250679, y: 1.2505887}
m_EdgeRadius: 0
--- !u!95 &95600343560029758
--- !u!95 &95156341909549574
Animator:
serializedVersion: 3
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1346522711063220}
m_GameObject: {fileID: 1860030746010208}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: a2991abac35f9ff4b933c50e1d598f38, type: 2}
m_Controller: {fileID: 9100000, guid: c8563e7de963bcc4a90cafd485471e9b, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
......@@ -174,34 +233,50 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 908a1b16b9926f747807d321c5ecc8af, type: 3}
m_Name:
m_EditorClassIdentifier:
damage: 0
--- !u!114 &114425347246421446
damage: 2
--- !u!114 &114337624805266014
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1346522711063220}
m_GameObject: {fileID: 1822069857481414}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 493db5529c03fce44a56a2211507667e, type: 3}
m_Name:
m_EditorClassIdentifier:
width: 0.4
height: 0.1
yOffset: 1.3
barPrefab: {fileID: 1489501648010076, guid: bd708b07601179842bbd803b54afda40, type: 2}
bor: {fileID: 21300000, guid: f978754916ff69444aa0bd613b44f2c5, type: 3}
red: {fileID: 21300000, guid: 014c5204ddcb6e54e86aadaa34227552, type: 3}
--- !u!114 &114803474034076246
MonoBehaviour:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1860030746010208}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2d73d07fdab522c4aa045e1cb6a92e8c, type: 3}
m_Script: {fileID: 11500000, guid: 7ce0adb34b612484eb45a52b7a457aba, type: 3}
m_Name:
m_EditorClassIdentifier:
monsterID: 42
maxHealth: 0
weight: 0
patrolRange: 0
noticeRange: 0
attackRange: 0
patrolSpeed: 0
trackSpeed: 0
attackDelay: 0
attackDuration: 0
--- !u!212 &212906216626823524
maxHealth: 10
weight: 10
patrolRange: 3
noticeRange: 2
patrolSpeed: 1
trackSpeed: 1.5
knockbackPercentage:
- 0.5
--- !u!212 &212993065858080250
SpriteRenderer:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1346522711063220}
m_GameObject: {fileID: 1860030746010208}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
......@@ -228,17 +303,17 @@ SpriteRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingLayerID: -2078941185
m_SortingLayer: 7
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: 9588a72c7c886de4a999bf6cc7948b84, type: 3}
m_Sprite: {fileID: 21300000, guid: 3f4a1ae9be64d9f46b0fd7fbffeb58a4, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 6.64, y: 5.48}
m_Size: {x: 1.25, y: 1.25}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
m_SpriteSortPoint: 1
......@@ -51,24 +51,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fc7c7899a8a94c24cb9eb34d432133ce, type: 3}
m_Name:
m_EditorClassIdentifier:
player: {fileID: 1623439448163086, guid: 3d077a5f727dd1e4780e9265ed26e036, type: 2}
dropTableData: {fileID: 4900000, guid: 6216895c658a2af40890a4446cc10a8c, type: 3}
dropItemList:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
enemyPrefab:
- {fileID: 1636491341446076, guid: a164c147037e89448820f7387c724c42, type: 2}
- {fileID: 1346522711063220, guid: e4298313f9e94c44fb057542ec7ad273, type: 2}
EnemySpawnCount: 0
EnemyDeadCount: 0
This source diff could not be displayed because it is too large. You can view the blob instead.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAirIdle : StateMachineBehaviour {
float patrolRange;
float patrolSpeed;
float noticeRange;
Vector2 origin;
Transform animatorRoot;
EnemyAir enemy;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
origin = animator.transform.position;
animatorRoot = animator.transform.parent;
enemy = animator.GetComponent<EnemyAir>();
patrolRange = enemy.patrolRange;
noticeRange = enemy.noticeRange;
patrolSpeed = enemy.patrolSpeed;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
if (enemy.PlayerDistance < noticeRange)
{
animator.SetTrigger("TrackTrigger");
return;
}
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
// OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
// OnStateIK is called right after Animator.OnAnimatorIK(). Code that sets up animation IK (inverse kinematics) should be implemented here.
//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
}
fileFormatVersion: 2
guid: 026903d6f2ef73c4b8c30d71a7b40081
guid: 11413b136ebb3b54d9ad632cc4ef4d60
MonoImporter:
externalObjects: {}
serializedVersion: 2
......
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAirTrack : StateMachineBehaviour {
float trackSpeed;
GameObject player;
Transform animatorRoot;
EnemyAir enemy;
Vector2 direction;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
animatorRoot = animator.transform.parent;
enemy = animator.GetComponent<EnemyAir>();
player = EnemyManager.Instance.Player;
trackSpeed = enemy.trackSpeed;
SetDirection();
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
SetDirection();
Vector2 vel = direction * trackSpeed;
enemy.ChangeVelocityXY_noOption(vel);
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
// OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
// OnStateIK is called right after Animator.OnAnimatorIK(). Code that sets up animation IK (inverse kinematics) should be implemented here.
//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
//
//}
private void SetDirection()
{
direction = player.transform.position - animatorRoot.position;
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
enemy.ChangeAngleZ_noOption(angle - 90.0f);
}
}
fileFormatVersion: 2
guid: b24234f0901ca8344922d2c140a48dd2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -8,20 +8,20 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
float noticeRange;
Vector2 origin;
Transform animatorRoot;
Enemy enemy;
EnemyGround enemy;
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
origin = animator.transform.position;
animatorRoot = animator.transform.parent;
enemy = animator.GetComponent<Enemy>();
enemy = animator.GetComponent<EnemyGround>();
patrolRange = enemy.patrolRange;
noticeRange = enemy.noticeRange;
patrolSpeed = enemy.patrolSpeed;
enemy.ChangeDir(NumeratedDir.Left);
enemy.ChangeVelocityX(enemy.MoveDir * patrolSpeed);
enemy.ChangeDir_noOption(NumeratedDir.Left);
enemy.ChangeVelocityX_noOption(enemy.MoveDir * patrolSpeed);
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
......@@ -40,8 +40,8 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
enemy.CliffTest[(enemy.MoveDir + 1) / 2]
)
{
enemy.ChangeDir(enemy.MoveDir * -1);
enemy.ChangeVelocityX(enemy.MoveDir * patrolSpeed);
enemy.ChangeDir_noOption(enemy.MoveDir * -1);
enemy.ChangeVelocityX_noOption(enemy.MoveDir * patrolSpeed);
}
}
}
......
......@@ -7,7 +7,7 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
float attackRange;
GameObject player;
Transform animatorRoot;
Enemy enemy;
EnemyGround enemy;
readonly int maxFrame = 10;
int frameCounter = 0;
......@@ -15,21 +15,21 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
animatorRoot = animator.transform.parent;
enemy = animator.GetComponent<Enemy>();
enemy = animator.GetComponent<EnemyGround>();
player = EnemyManager.Instance.Player;
trackSpeed = enemy.trackSpeed;
attackRange = enemy.attackRange;
NumeratedDir trackDir = (animatorRoot.position.x - player.transform.position.x > 0) ? NumeratedDir.Left : NumeratedDir.Right;
enemy.ChangeDir(trackDir);
enemy.ChangeDir_noOption(trackDir);
if (enemy.CliffTest[(enemy.MoveDir + 1) / 2] || animator.GetComponent<Enemy>().PlayerDistance < attackRange)
{
enemy.ChangeVelocityX(0.0f);
enemy.ChangeVelocityX_noOption(0.0f);
}
else
{
enemy.ChangeVelocityX(enemy.MoveDir * trackSpeed);
enemy.ChangeVelocityX_noOption(enemy.MoveDir * trackSpeed);
}
}
......@@ -43,18 +43,18 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
int integerDir = enemy.MoveDir;
if (enemy.WallTest[(integerDir + 1) / 2] || enemy.CliffTest[(integerDir + 1) / 2])
{
enemy.ChangeVelocityX(0.0f);
enemy.ChangeVelocityX_noOption(0.0f);
}
else
{
enemy.ChangeVelocityX(enemy.MoveDir * trackSpeed);
enemy.ChangeVelocityX_noOption(enemy.MoveDir * trackSpeed);
}
frameCounter += 1;
if (frameCounter >= maxFrame)
{
NumeratedDir trackDir = (animatorRoot.position.x - player.transform.position.x > 0) ? NumeratedDir.Left : NumeratedDir.Right;
enemy.ChangeDir(trackDir);
enemy.ChangeDir_noOption(trackDir);
frameCounter = 0;
}
}
......
This diff is collapsed.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyAir : Enemy {
protected override IEnumerator OnIce(float duration)
{
throw new System.NotImplementedException();
}
protected override IEnumerator OnStun(float duration)
{
throw new System.NotImplementedException();
}
protected override IEnumerator Knockback(float knockbackDist, float knockbackTime)
{
throw new System.NotImplementedException();
}
public void ChangeAngleZ_noOption(float val)
{
ChangeAngleZ(val, new bool[] { MovementLock, KnockbackLock });
}
public void ChangeVelocityXY_noOption(Vector2 val)
{
ChangeVelocityXY(val, new bool[] { MovementLock, KnockbackLock });
}
private void ChangeAngleZ(float val, bool[] lockArray)
{
foreach (var Lock in lockArray) { if (Lock) return; }
Vector3 tempAngle = transform.parent.eulerAngles;
tempAngle.z = val;
transform.parent.eulerAngles = tempAngle;
}
private void ChangeVelocityXY(Vector2 val, bool[] lockArray)
{
foreach (var Lock in lockArray) { if (Lock) return; }
Vector3 tempVelocity = transform.parent.gameObject.GetComponent<Rigidbody2D>().velocity;
tempVelocity.x = val.x;
tempVelocity.y = val.y;
transform.parent.gameObject.GetComponent<Rigidbody2D>().velocity = tempVelocity;
}
}
fileFormatVersion: 2
guid: 7ce0adb34b612484eb45a52b7a457aba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class EnemyGround : Enemy {
public float attackRange;
public int MoveDir { get; private set; }
public bool[] WallTest { get; private set; }
public bool[] CliffTest { get; private set; }
protected override void Awake()
{
base.Awake();
WallTest = new bool[] { false, false };
CliffTest = new bool[] { false, false };
}
protected override void Start()
{
base.Start();
MoveDir = (int)NumeratedDir.Left;
}
protected override void FixedUpdate()
{
base.FixedUpdate();
CheckCliff(); CheckWall();
}
// Movement & Physics
// - Check whether enemy is near to cliff
private void CheckCliff()
{
Vector2 velocity = transform.parent.GetComponent<Rigidbody2D>().velocity;
Vector2 colliderSize = transform.parent.GetComponent<BoxCollider2D>().size;
foreach (int Dir in Enum.GetValues(typeof(NumeratedDir)))
{
Vector2 origin = (Vector2)transform.parent.position + Dir * new Vector2(colliderSize.x / 2.0f, 0);
Vector2 direction = Vector2.down;
float distance = colliderSize.y / 4.0f;
int layerMask = LayerMask.NameToLayer("platform");
RaycastHit2D hit = Physics2D.Raycast(origin, direction, distance, layerMask);
CliffTest[(Dir + 1) / 2] = (hit.collider == null);
}
}
// - Check whether enemy is touching wall
private void CheckWall()
{
Vector2 colliderSize = transform.parent.GetComponent<BoxCollider2D>().size;
foreach (int Dir in Enum.GetValues(typeof(NumeratedDir)))
{
Vector2 origin = (Vector2)transform.parent.position + new Vector2(Dir * colliderSize.x / 2.0f, colliderSize.y);
Vector2 direction = Vector2.right * Dir;
float distance = 0.5f;
LayerMask layerMask = LayerMask.GetMask("Wall", "OuterWall");
RaycastHit2D hit = Physics2D.Raycast(origin, direction, distance, layerMask);
WallTest[(Dir + 1) / 2] = (hit.collider != null);
}
}
// - Change direction, and speed of rigidbody of enemy
public void ChangeVelocityX_noOption(float val)
{
ChangeVelocityX(val, new bool[] { MovementLock, KnockbackLock });
}
public void ChangeDir_noOption(object dir)
{
ChangeDir(dir, new bool[] { MovementLock, KnockbackLock });
}
private void ChangeVelocityX(float val, bool[] lockArray)
{
foreach (var Lock in lockArray) { if (Lock) return; }
Vector2 tempVelocity = transform.parent.GetComponent<Rigidbody2D>().velocity;
tempVelocity.x = val;
transform.parent.GetComponent<Rigidbody2D>().velocity = tempVelocity;
}
private void ChangeDir(object dir, bool[] lockArray)
{
foreach (var Lock in lockArray) { if (Lock) return; }
MoveDir = (int)dir;
transform.parent.eulerAngles = ((NumeratedDir)dir == NumeratedDir.Left) ? new Vector2(0, 0) : new Vector2(0, 180);
}
// - Knockback coroutine
protected override IEnumerator Knockback(float knockbackDist, float knockbackTime)
{
MovementLock = true;
bool[] lockArray = new bool[] { false, KnockbackLock };
int knockbackDir = (enemyManager.Player.transform.position.x - transform.parent.position.x >= 0) ? -1 : 1;
float knockbackVelocity = knockbackDir * knockbackDist / knockbackTime;
ChangeDir(knockbackDir * -1, new bool[] { MovementLock, KnockbackLock });
ChangeVelocityX(knockbackVelocity, lockArray);
for (float timer = 0; timer <= knockbackTime; timer += Time.deltaTime)
{
if (CliffTest[(knockbackDir + 1) / 2])
{
ChangeVelocityX(0.0f, lockArray);
yield return new WaitForSeconds(knockbackTime - timer);
break;
}
yield return new WaitForFixedUpdate();
}
MovementLock = false;
ChangeVelocityX(0.0f, new bool[] { MovementLock, KnockbackLock });
}
protected override IEnumerator OnIce(float duration)
{
ChangeVelocityX(0.0f, new bool[] { });
KnockbackLock = true;
animator.SetTrigger("StunnedTrigger");
animator.speed = stunnedAnimLength / duration;
yield return new WaitForSeconds(duration);
OffDebuff(EnemyDebuffCase.Ice);
}
protected override IEnumerator OnStun(float duration)
{
ChangeVelocityX(0.0f, new bool[] { });
animator.SetTrigger("StunnedTrigger");
animator.speed = stunnedAnimLength / duration;
yield return new WaitForSeconds(duration);
OffDebuff(EnemyDebuffCase.Stun);
yield return null;
}
}
fileFormatVersion: 2
guid: a11d071a77ab21c48882c6c6e4db8f17
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -63,6 +63,24 @@ public class EnemyManager : Singleton<EnemyManager>
}
}
// Spawn Enemy to Map
public void SpawnEnemyToMap_forTest()
{
EnemySpawnCount = EnemyDeadCount = 0;
Transform enemySpots = GameObject.Find("Grid").transform.GetChild(0).GetChild(0).Find("enemy spot");
foreach (Transform enemySpot in enemySpots)
{
if (!enemySpot.gameObject.activeSelf) continue;
GameObject enemy = enemySpot.gameObject.GetComponent<enemySpot>().enemyPrefab;
foreach (Transform location in enemySpot)
{
GameObject clone = PickFromPool(enemy);
clone.transform.position = location.position;
clone.transform.SetParent(MapManager.currentRoom.roomInGame.transform);
}
}
}
public bool IsClear()
{
return (EnemyDeadCount == EnemySpawnCount);
......
......@@ -53,7 +53,7 @@ public class Test : MonoBehaviour {
}
public void SummonEnemy()
{
EnemyManager.Instance.SpawnEnemyToMap();
EnemyManager.Instance.SpawnEnemyToMap_forTest();
}
......
fileFormatVersion: 2
guid: 5af1a51130e303a48943d280fdd8524b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9588a72c7c886de4a999bf6cc7948b84
guid: 3f4a1ae9be64d9f46b0fd7fbffeb58a4
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
......@@ -31,7 +31,7 @@ TextureImporter:
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
filterMode: 0
aniso: -1
mipBias: -100
wrapU: 1
......@@ -45,7 +45,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spritePixelsToUnits: 64
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
......@@ -63,7 +63,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
......@@ -74,18 +74,7 @@ TextureImporter:
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
......@@ -97,7 +86,7 @@ TextureImporter:
outline: []
physicsShape: []
bones: []
spriteID: a056a27b5da67434cbddf45ee2e1113d
spriteID: 255038a448d1a6843905bb243e0d08bf
vertices: []
indices:
edges: []
......
fileFormatVersion: 2
guid: a6edaaede1a4aea42a1e9fea0eec397e
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 6
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 381f3859d4182af4fa7972b8e6404c51
vertices: []
indices:
edges: []
weights: []
spritePackingTag: 12
userData:
assetBundleName:
assetBundleVariant:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment