Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
tetra-tower
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Oenos
tetra-tower
Commits
753e071e
Commit
753e071e
authored
Feb 14, 2019
by
15김민규
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
넉백 구현. 움직임 제대로 나옴.
parent
b062ff54
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
149 additions
and
173 deletions
+149
-173
Goblin Dead.anim
Assets/Animation/Enemy/Goblin/Goblin Dead.anim
+7
-0
melee.controller
Assets/Animation/Enemy/melee.controller
+1
-5
Goblin.prefab
Assets/Prefabs/Characters/Enemy/Goblin.prefab
+3
-3
testEnemy.unity
Assets/Scenes/testEnemy.unity
+57
-57
EnemyDamaged.cs
...s/Scripts/Characters/Enemy/Animator State/EnemyDamaged.cs
+0
-54
EnemyDamaged.cs.meta
...ipts/Characters/Enemy/Animator State/EnemyDamaged.cs.meta
+0
-11
EnemyMeleeIdle.cs
...Scripts/Characters/Enemy/Animator State/EnemyMeleeIdle.cs
+12
-9
EnemyMeleeTrack.cs
...cripts/Characters/Enemy/Animator State/EnemyMeleeTrack.cs
+9
-3
Enemy.cs
Assets/Scripts/Characters/Enemy/Enemy.cs
+60
-31
No files found.
Assets/Animation/Enemy/Goblin/Goblin Dead.anim
View file @
753e071e
...
@@ -108,6 +108,13 @@ AnimationClip:
...
@@ -108,6 +108,13 @@ AnimationClip:
m_HasMotionFloatCurves
:
0
m_HasMotionFloatCurves
:
0
m_GenerateMotionCurves
:
0
m_GenerateMotionCurves
:
0
m_Events
:
m_Events
:
-
time
:
0
functionName
:
ChangeVelocityX
data
:
objectReferenceParameter
:
{
fileID
:
0
}
floatParameter
:
0
intParameter
:
0
messageOptions
:
0
-
time
:
1
-
time
:
1
functionName
:
DeadEvent
functionName
:
DeadEvent
data
:
data
:
...
...
Assets/Animation/Enemy/melee.controller
View file @
753e071e
...
@@ -192,9 +192,6 @@ AnimatorStateTransition:
...
@@ -192,9 +192,6 @@ AnimatorStateTransition:
m_PrefabInternal
:
{
fileID
:
0
}
m_PrefabInternal
:
{
fileID
:
0
}
m_Name
:
m_Name
:
m_Conditions
:
m_Conditions
:
-
m_ConditionMode
:
1
m_ConditionEvent
:
TrackTrigger
m_EventTreshold
:
0
-
m_ConditionMode
:
1
-
m_ConditionMode
:
1
m_ConditionEvent
:
TrackTrigger
m_ConditionEvent
:
TrackTrigger
m_EventTreshold
:
0
m_EventTreshold
:
0
...
@@ -272,8 +269,7 @@ AnimatorState:
...
@@ -272,8 +269,7 @@ AnimatorState:
m_CycleOffset
:
0
m_CycleOffset
:
0
m_Transitions
:
m_Transitions
:
-
{
fileID
:
1101117024733671452
}
-
{
fileID
:
1101117024733671452
}
m_StateMachineBehaviours
:
m_StateMachineBehaviours
:
[]
-
{
fileID
:
114316214165794054
}
m_Position
:
{
x
:
50
,
y
:
50
,
z
:
0
}
m_Position
:
{
x
:
50
,
y
:
50
,
z
:
0
}
m_IKOnFeet
:
0
m_IKOnFeet
:
0
m_WriteDefaultValues
:
1
m_WriteDefaultValues
:
1
...
...
Assets/Prefabs/Characters/Enemy/Goblin.prefab
View file @
753e071e
...
@@ -45,7 +45,7 @@ GameObject:
...
@@ -45,7 +45,7 @@ GameObject:
m_Icon
:
{
fileID
:
0
}
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
1
m_IsActive
:
0
---
!u!1
&1734061800721222
---
!u!1
&1734061800721222
GameObject
:
GameObject
:
m_ObjectHideFlags
:
1
m_ObjectHideFlags
:
1
...
@@ -149,7 +149,7 @@ Rigidbody2D:
...
@@ -149,7 +149,7 @@ Rigidbody2D:
m_Mass
:
1
m_Mass
:
1
m_LinearDrag
:
0
m_LinearDrag
:
0
m_AngularDrag
:
0.05
m_AngularDrag
:
0.05
m_GravityScale
:
30
m_GravityScale
:
1
m_Material
:
{
fileID
:
0
}
m_Material
:
{
fileID
:
0
}
m_Interpolate
:
0
m_Interpolate
:
0
m_SleepingMode
:
1
m_SleepingMode
:
1
...
@@ -260,7 +260,7 @@ MonoBehaviour:
...
@@ -260,7 +260,7 @@ MonoBehaviour:
m_Name
:
m_Name
:
m_EditorClassIdentifier
:
m_EditorClassIdentifier
:
monsterID
:
117
monsterID
:
117
maxHealth
:
1
5
maxHealth
:
5
5
weight
:
10
weight
:
10
patrolRange
:
2
patrolRange
:
2
noticeRange
:
2
noticeRange
:
2
...
...
Assets/Scenes/testEnemy.unity
View file @
753e071e
...
@@ -1108,6 +1108,11 @@ MonoBehaviour:
...
@@ -1108,6 +1108,11 @@ MonoBehaviour:
type
:
2
}
type
:
2
}
m_PrefabInternal
:
{
fileID
:
1711972807
}
m_PrefabInternal
:
{
fileID
:
1711972807
}
m_Script
:
{
fileID
:
11500000
,
guid
:
7fe540ec78947fc449eabc76bd87823d
,
type
:
3
}
m_Script
:
{
fileID
:
11500000
,
guid
:
7fe540ec78947fc449eabc76bd87823d
,
type
:
3
}
---
!u!4
&1207417820
stripped
Transform
:
m_CorrespondingSourceObject
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
m_PrefabInternal
:
{
fileID
:
1787348169
}
---
!u!224
&1209430809
stripped
---
!u!224
&1209430809
stripped
RectTransform
:
RectTransform
:
m_CorrespondingSourceObject
:
{
fileID
:
224402251087470820
,
guid
:
c179f0931cfabec428a868a6edc543b0
,
m_CorrespondingSourceObject
:
{
fileID
:
224402251087470820
,
guid
:
c179f0931cfabec428a868a6edc543b0
,
...
@@ -1150,7 +1155,7 @@ Transform:
...
@@ -1150,7 +1155,7 @@ Transform:
m_LocalPosition
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalPosition
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalScale
:
{
x
:
1
,
y
:
1
,
z
:
1
}
m_LocalScale
:
{
x
:
1
,
y
:
1
,
z
:
1
}
m_Children
:
m_Children
:
-
{
fileID
:
1
509282194
}
-
{
fileID
:
1
207417820
}
m_Father
:
{
fileID
:
0
}
m_Father
:
{
fileID
:
0
}
m_RootOrder
:
4
m_RootOrder
:
4
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
m_LocalEulerAnglesHint
:
{
x
:
0
,
y
:
0
,
z
:
0
}
...
@@ -1330,62 +1335,6 @@ Canvas:
...
@@ -1330,62 +1335,6 @@ Canvas:
m_CorrespondingSourceObject
:
{
fileID
:
223237664237935382
,
guid
:
692aad2449e06054799ea4706578fb23
,
m_CorrespondingSourceObject
:
{
fileID
:
223237664237935382
,
guid
:
692aad2449e06054799ea4706578fb23
,
type
:
2
}
type
:
2
}
m_PrefabInternal
:
{
fileID
:
28941081
}
m_PrefabInternal
:
{
fileID
:
28941081
}
---
!u!1001
&1509282193
Prefab
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_Modification
:
m_TransformParent
:
{
fileID
:
1244139631
}
m_Modifications
:
-
target
:
{
fileID
:
66792933649035248
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_ColliderPaths.Array.size
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.w
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_RootOrder
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1915452461634262
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
1
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!4
&1509282194
stripped
Transform
:
m_CorrespondingSourceObject
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
m_PrefabInternal
:
{
fileID
:
1509282193
}
---
!u!4
&1604462410
stripped
---
!u!4
&1604462410
stripped
Transform
:
Transform
:
m_CorrespondingSourceObject
:
{
fileID
:
4884929250924374
,
guid
:
e6794ab8e2e4c6340a23b382e9497cbb
,
m_CorrespondingSourceObject
:
{
fileID
:
4884929250924374
,
guid
:
e6794ab8e2e4c6340a23b382e9497cbb
,
...
@@ -1640,6 +1589,57 @@ Prefab:
...
@@ -1640,6 +1589,57 @@ Prefab:
m_RemovedComponents
:
[]
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
c179f0931cfabec428a868a6edc543b0
,
type
:
2
}
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
c179f0931cfabec428a868a6edc543b0
,
type
:
2
}
m_IsPrefabAsset
:
0
m_IsPrefabAsset
:
0
---
!u!1001
&1787348169
Prefab
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_Modification
:
m_TransformParent
:
{
fileID
:
1244139631
}
m_Modifications
:
-
target
:
{
fileID
:
66792933649035248
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_ColliderPaths.Array.size
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalPosition.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_LocalRotation.w
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4874486600194970
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_RootOrder
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1915452461634262
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
0443c2e9410bbe545bda40dc30fa6a63
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!114
&1908917313
stripped
---
!u!114
&1908917313
stripped
MonoBehaviour
:
MonoBehaviour
:
m_CorrespondingSourceObject
:
{
fileID
:
114939219159237616
,
guid
:
62a83d11a7addc342ad436145784e698
,
m_CorrespondingSourceObject
:
{
fileID
:
114939219159237616
,
guid
:
62a83d11a7addc342ad436145784e698
,
...
...
Assets/Scripts/Characters/Enemy/Animator State/EnemyDamaged.cs
deleted
100644 → 0
View file @
b062ff54
using
System.Collections
;
using
System.Collections.Generic
;
using
UnityEngine
;
public
class
EnemyDamaged
:
StateMachineBehaviour
{
RuntimeAnimatorController
ac
;
float
knockbackTime
;
float
knockbackSpeed
;
float
knockbackDir
;
// 1: right \ -1: left
Vector3
leftsideAngle
=
new
Vector3
(
0
,
0
,
0
);
Vector3
rightsideAngle
=
new
Vector3
(
0
,
180
,
0
);
Transform
pivotTransform
;
// 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
)
{
ac
=
animator
.
runtimeAnimatorController
;
foreach
(
var
clip
in
ac
.
animationClips
)
{
if
(
clip
.
name
.
Contains
(
"Damaged"
))
{
knockbackTime
=
clip
.
length
;
}
}
knockbackSpeed
=
animator
.
GetFloat
(
"knockbackDistance"
)
/
knockbackTime
;
Transform
playerTransform
=
EnemyManager
.
Instance
.
Player
.
transform
;
pivotTransform
=
animator
.
transform
.
parent
;
pivotTransform
.
eulerAngles
=
(
playerTransform
.
position
.
x
-
pivotTransform
.
position
.
x
<
0
)
?
leftsideAngle
:
rightsideAngle
;
knockbackDir
=
(
playerTransform
.
position
.
x
-
pivotTransform
.
position
.
x
<
0
)
?
1
:
-
1
;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override
public
void
OnStateUpdate
(
Animator
animator
,
AnimatorStateInfo
stateInfo
,
int
layerIndex
)
{
Vector2
currPosition
=
pivotTransform
.
position
;
Vector2
movingDistance
=
new
Vector2
(
knockbackSpeed
*
Time
.
deltaTime
,
0
)
*
knockbackDir
;
pivotTransform
.
gameObject
.
GetComponent
<
Rigidbody2D
>().
MovePosition
(
currPosition
+
movingDistance
);
}
// 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) {
//
//}
}
Assets/Scripts/Characters/Enemy/Animator State/EnemyDamaged.cs.meta
deleted
100644 → 0
View file @
b062ff54
fileFormatVersion: 2
guid: 752c7d4f7a0f1444c84cadeae1fab1d7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
Assets/Scripts/Characters/Enemy/Animator State/EnemyMeleeIdle.cs
View file @
753e071e
...
@@ -31,15 +31,18 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
...
@@ -31,15 +31,18 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
animator
.
SetTrigger
(
"TrackTrigger"
);
animator
.
SetTrigger
(
"TrackTrigger"
);
return
;
return
;
}
}
float
span
=
animatorRoot
.
position
.
x
-
origin
.
x
;
if
(!
enemy
.
DuringKnockback
)
{
if
((
Mathf
.
Abs
(
span
)
>
patrolRange
&&
span
*
enemy
.
MoveDir
>
0
)
||
float
span
=
animatorRoot
.
position
.
x
-
origin
.
x
;
enemy
.
WallTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
if
((
Mathf
.
Abs
(
span
)
>
patrolRange
&&
span
*
enemy
.
MoveDir
>
0
)
||
)
enemy
.
WallTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
{
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
enemy
.
ChangeDir
(
enemy
.
MoveDir
*
-
1
);
)
enemy
.
ChangeVelocityX
(
enemy
.
MoveDir
*
patrolSpeed
);
{
enemy
.
ChangeDir
(
enemy
.
MoveDir
*
-
1
);
enemy
.
ChangeVelocityX
(
enemy
.
MoveDir
*
patrolSpeed
);
}
}
}
}
}
...
...
Assets/Scripts/Characters/Enemy/Animator State/EnemyMeleeTrack.cs
View file @
753e071e
...
@@ -22,8 +22,15 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
...
@@ -22,8 +22,15 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
attackRange
=
enemy
.
attackRange
;
attackRange
=
enemy
.
attackRange
;
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeVelocityX
(
trackSpeed
);
enemy
.
ChangeDir
(
trackDir
);
enemy
.
ChangeDir
(
trackDir
);
if
(
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
animator
.
GetComponent
<
Enemy
>().
PlayerDistance
<
attackRange
)
{
enemy
.
ChangeVelocityX
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX
(
enemy
.
MoveDir
*
trackSpeed
);
}
}
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
...
@@ -33,7 +40,6 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
...
@@ -33,7 +40,6 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
animator
.
SetTrigger
(
"AttackTrigger"
);
animator
.
SetTrigger
(
"AttackTrigger"
);
return
;
return
;
}
}
int
integerDir
=
enemy
.
MoveDir
;
int
integerDir
=
enemy
.
MoveDir
;
if
(
enemy
.
WallTest
[(
integerDir
+
1
)
/
2
]
||
enemy
.
CliffTest
[(
integerDir
+
1
)
/
2
])
if
(
enemy
.
WallTest
[(
integerDir
+
1
)
/
2
]
||
enemy
.
CliffTest
[(
integerDir
+
1
)
/
2
])
{
{
...
@@ -51,7 +57,7 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
...
@@ -51,7 +57,7 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
enemy
.
ChangeDir
(
trackDir
);
enemy
.
ChangeDir
(
trackDir
);
frameCounter
=
0
;
frameCounter
=
0
;
}
}
}
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
// 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) {
//override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
...
...
Assets/Scripts/Characters/Enemy/Enemy.cs
View file @
753e071e
...
@@ -41,8 +41,18 @@ public class Enemy : MonoBehaviour {
...
@@ -41,8 +41,18 @@ public class Enemy : MonoBehaviour {
public
float
PlayerDistance
{
get
;
private
set
;
}
public
float
PlayerDistance
{
get
;
private
set
;
}
private
readonly
float
knockbackCritPoint
=
0.25f
;
private
readonly
float
knockbackCritPoint
=
0.25f
;
public
bool
[]
WallTest
{
get
;
private
set
;
}
// {left, right}
public
bool
[]
WallTest
{
get
;
private
set
;
}
public
bool
[]
CliffTest
{
get
;
private
set
;
}
// {left, right}
public
bool
[]
CliffTest
{
get
;
private
set
;
}
/*
public bool[] WallTest { get { return wallTest; } private set { wallTest = value; } } // {left, right}
public bool[] CliffTest { get { return cliffTest; } private set { cliffTest = value; } } // {left, right}
[SerializeField]
private bool[] wallTest;
[SerializeField]
private bool[] cliffTest;
*/
public
int
MoveDir
{
get
;
private
set
;
}
public
int
MoveDir
{
get
;
private
set
;
}
...
@@ -68,10 +78,11 @@ public class Enemy : MonoBehaviour {
...
@@ -68,10 +78,11 @@ public class Enemy : MonoBehaviour {
currHealth
=
maxHealth
;
currHealth
=
maxHealth
;
Invisible
=
DuringKnockback
=
false
;
Invisible
=
DuringKnockback
=
false
;
dropTable
=
enemyManager
.
DropTableByID
[
monsterID
];
dropTable
=
enemyManager
.
DropTableByID
[
monsterID
];
Physics2D
.
IgnoreCollision
(
enemyManager
.
Player
.
gameObject
.
GetComponent
<
Collider2D
>(),
transform
.
parent
.
GetComponent
<
Collider2D
>());
//Physics2D.IgnoreCollision(enemyManager.Player.gameObject.GetComponent<Collider2D>(), transform.parent.GetComponent<Collider2D>());
PlayerDistance
=
Vector2
.
Distance
(
enemyManager
.
Player
.
transform
.
position
,
transform
.
parent
.
position
);
}
}
private
void
Update
()
private
void
Fixed
Update
()
{
{
PlayerDistance
=
Vector2
.
Distance
(
enemyManager
.
Player
.
transform
.
position
,
transform
.
parent
.
position
);
PlayerDistance
=
Vector2
.
Distance
(
enemyManager
.
Player
.
transform
.
position
,
transform
.
parent
.
position
);
CheckCliff
();
CheckWall
();
CheckCliff
();
CheckWall
();
...
@@ -87,7 +98,7 @@ public class Enemy : MonoBehaviour {
...
@@ -87,7 +98,7 @@ public class Enemy : MonoBehaviour {
{
{
Vector2
origin
=
(
Vector2
)
transform
.
parent
.
position
+
Dir
*
new
Vector2
(
colliderSize
.
x
/
2.0f
,
0
);
Vector2
origin
=
(
Vector2
)
transform
.
parent
.
position
+
Dir
*
new
Vector2
(
colliderSize
.
x
/
2.0f
,
0
);
Vector2
direction
=
Vector2
.
down
;
Vector2
direction
=
Vector2
.
down
;
float
distance
=
colliderSize
.
y
/
2
.0f
;
float
distance
=
colliderSize
.
y
/
4
.0f
;
int
layerMask
=
LayerMask
.
NameToLayer
(
"platform"
);
int
layerMask
=
LayerMask
.
NameToLayer
(
"platform"
);
RaycastHit2D
hit
=
Physics2D
.
Raycast
(
origin
,
direction
,
distance
,
layerMask
);
RaycastHit2D
hit
=
Physics2D
.
Raycast
(
origin
,
direction
,
distance
,
layerMask
);
...
@@ -101,7 +112,7 @@ public class Enemy : MonoBehaviour {
...
@@ -101,7 +112,7 @@ public class Enemy : MonoBehaviour {
foreach
(
int
Dir
in
Enum
.
GetValues
(
typeof
(
NumeratedDir
)))
foreach
(
int
Dir
in
Enum
.
GetValues
(
typeof
(
NumeratedDir
)))
{
{
Vector2
origin
=
(
Vector2
)
transform
.
parent
.
position
+
Dir
*
new
Vector2
(
colliderSize
.
x
/
2.0f
,
0
);
Vector2
origin
=
(
Vector2
)
transform
.
parent
.
position
+
new
Vector2
(
Dir
*
colliderSize
.
x
/
2.0f
,
colliderSize
.
y
);
Vector2
direction
=
Vector2
.
right
*
Dir
;
Vector2
direction
=
Vector2
.
right
*
Dir
;
float
distance
=
0.02f
;
float
distance
=
0.02f
;
int
layerMask
=
LayerMask
.
GetMask
(
"Wall"
,
"OuterWall"
);
int
layerMask
=
LayerMask
.
GetMask
(
"Wall"
,
"OuterWall"
);
...
@@ -124,35 +135,49 @@ public class Enemy : MonoBehaviour {
...
@@ -124,35 +135,49 @@ public class Enemy : MonoBehaviour {
float
knockbackDist
=
attack
.
damage
*
attack
.
knockBackMultiplier
/
weight
;
float
knockbackDist
=
attack
.
damage
*
attack
.
knockBackMultiplier
/
weight
;
float
knockbackTime
=
(
knockbackDist
>=
0.5f
)
?
0.5f
:
knockbackDist
;
float
knockbackTime
=
(
knockbackDist
>=
0.5f
)
?
0.5f
:
knockbackDist
;
if
(
!
DuringKnockback
)
if
(
DuringKnockback
)
{
{
StartCoroutine
(
Knockback
(
knockbackDist
,
knockbackTime
));
StopCoroutine
(
"Knockback"
);
}
StartCoroutine
(
Knockback
(
knockbackDist
,
knockbackTime
));
if
(
knockbackDist
>=
knockbackCritPoint
)
if
(
knockbackDist
>=
knockbackCritPoint
)
{
{
animator
.
SetFloat
(
"knockbackTime"
,
knockbackTime
);
animator
.
SetFloat
(
"knockbackTime"
,
knockbackTime
);
animator
.
SetTrigger
(
"DamagedTrigger"
);
animator
.
SetTrigger
(
"DamagedTrigger"
);
}
}
}
}
}
// change speed of rigidbody of enemy
// change
direction, and
speed of rigidbody of enemy
public
void
ChangeVelocityX
(
float
val
)
public
void
ChangeVelocityX
(
float
val
)
{
if
(!
DuringKnockback
)
{
Vector2
tempVelocity
=
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
;
tempVelocity
.
x
=
val
;
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
=
tempVelocity
;
}
}
private
void
SudoChangeVelocityX
(
float
val
)
{
{
Vector2
tempVelocity
=
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
;
Vector2
tempVelocity
=
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
;
tempVelocity
.
x
=
val
;
tempVelocity
.
x
=
val
;
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
=
tempVelocity
;
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
=
tempVelocity
;
}
}
public
void
ChangeDir
(
NumeratedDir
dir
)
public
void
ChangeDir
(
object
dir
)
{
{
MoveDir
=
(
int
)
dir
;
if
(!
DuringKnockback
)
transform
.
parent
.
eulerAngles
=
(
dir
==
NumeratedDir
.
Left
)
?
new
Vector2
(
0
,
0
)
:
new
Vector2
(
0
,
180
);
{
MoveDir
=
(
int
)
dir
;
transform
.
parent
.
eulerAngles
=
((
NumeratedDir
)
dir
==
NumeratedDir
.
Left
)
?
new
Vector2
(
0
,
0
)
:
new
Vector2
(
0
,
180
);
}
}
}
p
ublic
void
ChangeDir
(
in
t
dir
)
p
rivate
void
SudoChangeDir
(
objec
t
dir
)
{
{
MoveDir
=
dir
;
MoveDir
=
(
int
)
dir
;
transform
.
parent
.
eulerAngles
=
((
NumeratedDir
)
dir
==
NumeratedDir
.
Left
)
?
new
Vector2
(
0
,
0
)
:
new
Vector2
(
0
,
180
);
transform
.
parent
.
eulerAngles
=
((
NumeratedDir
)
dir
==
NumeratedDir
.
Left
)
?
new
Vector2
(
0
,
0
)
:
new
Vector2
(
0
,
180
);
}
}
...
@@ -210,19 +235,23 @@ public class Enemy : MonoBehaviour {
...
@@ -210,19 +235,23 @@ public class Enemy : MonoBehaviour {
IEnumerator
Knockback
(
float
knockbackDist
,
float
knockbackTime
)
IEnumerator
Knockback
(
float
knockbackDist
,
float
knockbackTime
)
{
{
DuringKnockback
=
true
;
DuringKnockback
=
true
;
NumeratedDir
isPlayerLeft
=
(
enemyManager
.
Player
.
transform
.
position
.
x
-
transform
.
parent
.
position
.
x
<=
0
)
?
int
knockbackDir
=
(
enemyManager
.
Player
.
transform
.
position
.
x
-
transform
.
parent
.
position
.
x
>=
0
)
?
-
1
:
1
;
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
float
knockbackVelocity
=
knockbackDir
*
knockbackDist
/
knockbackTime
;
SudoChangeDir
(
knockbackDir
*
-
1
);
float
knockbackVelocity
=
(
int
)
isPlayerLeft
*
knockbackDist
/
knockbackTime
;
SudoChangeVelocityX
(
knockbackVelocity
);
transform
.
parent
.
eulerAngles
=
(
isPlayerLeft
==
NumeratedDir
.
Left
)
?
new
Vector2
(
0.0f
,
0.0f
)
:
new
Vector2
(
0.0f
,
180.0f
);
for
(
float
timer
=
0
;
timer
<=
knockbackTime
;
timer
+=
Time
.
deltaTime
)
Vector2
tempVelocity
=
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
;
{
tempVelocity
.
x
=
knockbackVelocity
;
if
(
CliffTest
[(
knockbackDir
+
1
)
/
2
])
transform
.
parent
.
GetComponent
<
Rigidbody2D
>().
velocity
=
tempVelocity
;
{
SudoChangeVelocityX
(
0.0f
);
yield
return
new
WaitForSeconds
(
knockbackTime
);
yield
return
new
WaitForSeconds
(
knockbackTime
-
timer
);
break
;
}
yield
return
new
WaitForFixedUpdate
();
}
DuringKnockback
=
false
;
DuringKnockback
=
false
;
ChangeVelocityX
(
0.0f
);
}
}
// Debuff
// Debuff
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment