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
81ba33bb
Commit
81ba33bb
authored
Feb 27, 2019
by
15김민규
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
movement lock 관련으로 많이 고침. 고블린 공격중에 뒤에서 맞아도 방향을 바꾸지 않음. 강제로 죽이는 메소드 생성
parent
9eea22ef
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
253 additions
and
200 deletions
+253
-200
Goblin Attack.anim
Assets/Animation/Enemy/Goblin/Goblin Attack.anim
+64
-1
Goblin Dead.anim
Assets/Animation/Enemy/Goblin/Goblin Dead.anim
+1
-1
Goblin.prefab
Assets/Prefabs/Characters/Enemy/Goblin.prefab
+2
-2
PlayScene.unity
Assets/Scenes/PlayScene.unity
+56
-46
AttackProperty.cs
Assets/Scripts/Characters/AttackProperty.cs
+1
-1
ArcherIdle.cs
Assets/Scripts/Characters/Enemy/Animator State/ArcherIdle.cs
+5
-5
ArcherTrack.cs
...ts/Scripts/Characters/Enemy/Animator State/ArcherTrack.cs
+6
-6
EnemyAirIdle.cs
...s/Scripts/Characters/Enemy/Animator State/EnemyAirIdle.cs
+0
-9
EnemyAirTrack.cs
.../Scripts/Characters/Enemy/Animator State/EnemyAirTrack.cs
+3
-6
EnemyMeleeIdle.cs
...Scripts/Characters/Enemy/Animator State/EnemyMeleeIdle.cs
+5
-5
EnemyMeleeTrack.cs
...cripts/Characters/Enemy/Animator State/EnemyMeleeTrack.cs
+6
-6
Jollarcher2Track.cs
...ripts/Characters/Enemy/Animator State/Jollarcher2Track.cs
+6
-6
Enemy.cs
Assets/Scripts/Characters/Enemy/Enemy.cs
+37
-45
EnemyAir.cs
Assets/Scripts/Characters/Enemy/EnemyAir.cs
+31
-32
EnemyGround.cs
Assets/Scripts/Characters/Enemy/EnemyGround.cs
+13
-19
Scarecrow.cs
Assets/Scripts/Characters/Enemy/Scarecrow.cs
+5
-5
EnemyManager.cs
Assets/Scripts/EnemyManager.cs
+1
-1
Enumerators.cs
Assets/Scripts/Enumerators.cs
+7
-0
HPBar.cs
Assets/Scripts/HPBar.cs
+1
-1
Gluttony.cs
Assets/Scripts/Item/Addons/Gluttony.cs
+1
-1
JanusCoin.cs
Assets/Scripts/Item/Addons/JanusCoin.cs
+1
-1
ShockStick.cs
Assets/Scripts/Item/Items/ShockStick.cs
+1
-1
No files found.
Assets/Animation/Enemy/Goblin/Goblin Attack.anim
View file @
81ba33bb
...
...
@@ -53,6 +53,34 @@ AnimationClip:
path
:
Hitbox
classID
:
61
script
:
{
fileID
:
0
}
-
curve
:
serializedVersion
:
2
m_Curve
:
-
serializedVersion
:
3
time
:
0
value
:
1
inSlope
:
Infinity
outSlope
:
Infinity
tangentMode
:
103
weightedMode
:
0
inWeight
:
0
outWeight
:
0
-
serializedVersion
:
3
time
:
1.25
value
:
0
inSlope
:
Infinity
outSlope
:
Infinity
tangentMode
:
103
weightedMode
:
0
inWeight
:
0
outWeight
:
0
m_PreInfinity
:
2
m_PostInfinity
:
2
m_RotationOrder
:
4
attribute
:
movementLock
path
:
classID
:
114
script
:
{
fileID
:
11500000
,
guid
:
a11d071a77ab21c48882c6c6e4db8f17
,
type
:
3
}
m_PPtrCurves
:
-
curve
:
-
time
:
0
...
...
@@ -85,6 +113,13 @@ AnimationClip:
typeID
:
61
customType
:
0
isPPtrCurve
:
0
-
serializedVersion
:
2
path
:
0
attribute
:
1234365794
script
:
{
fileID
:
11500000
,
guid
:
a11d071a77ab21c48882c6c6e4db8f17
,
type
:
3
}
typeID
:
114
customType
:
0
isPPtrCurve
:
0
-
serializedVersion
:
2
path
:
0
attribute
:
0
...
...
@@ -157,13 +192,41 @@ AnimationClip:
path
:
Hitbox
classID
:
61
script
:
{
fileID
:
0
}
-
curve
:
serializedVersion
:
2
m_Curve
:
-
serializedVersion
:
3
time
:
0
value
:
1
inSlope
:
Infinity
outSlope
:
Infinity
tangentMode
:
103
weightedMode
:
0
inWeight
:
0
outWeight
:
0
-
serializedVersion
:
3
time
:
1.25
value
:
0
inSlope
:
Infinity
outSlope
:
Infinity
tangentMode
:
103
weightedMode
:
0
inWeight
:
0
outWeight
:
0
m_PreInfinity
:
2
m_PostInfinity
:
2
m_RotationOrder
:
4
attribute
:
movementLock
path
:
classID
:
114
script
:
{
fileID
:
11500000
,
guid
:
a11d071a77ab21c48882c6c6e4db8f17
,
type
:
3
}
m_EulerEditorCurves
:
[]
m_HasGenericRootTransform
:
0
m_HasMotionFloatCurves
:
0
m_GenerateMotionCurves
:
0
m_Events
:
-
time
:
0
functionName
:
ChangeVelocityX_
noOption
functionName
:
ChangeVelocityX_
movement
data
:
objectReferenceParameter
:
{
fileID
:
0
}
floatParameter
:
0
...
...
Assets/Animation/Enemy/Goblin/Goblin Dead.anim
View file @
81ba33bb
...
...
@@ -109,7 +109,7 @@ AnimationClip:
m_GenerateMotionCurves
:
0
m_Events
:
-
time
:
0
functionName
:
ChangeVelocityX_
noOption
functionName
:
ChangeVelocityX_
movement
data
:
objectReferenceParameter
:
{
fileID
:
0
}
floatParameter
:
0
...
...
Assets/Prefabs/Characters/Enemy/Goblin.prefab
View file @
81ba33bb
...
...
@@ -61,7 +61,7 @@ GameObject:
m_Icon
:
{
fileID
:
0
}
m_NavMeshLayer
:
0
m_StaticEditorFlags
:
0
m_IsActive
:
0
m_IsActive
:
1
---
!u!1
&1734061800721222
GameObject
:
m_ObjectHideFlags
:
1
...
...
@@ -299,7 +299,7 @@ MonoBehaviour:
trackSpeed
:
2.5
knockbackPercentage
:
-
0.5
M
ovementLock
:
0
m
ovementLock
:
0
attackRange
:
1.2
WallTest
:
CliffTest
:
...
...
Assets/Scenes/PlayScene.unity
View file @
81ba33bb
...
...
@@ -421,6 +421,10 @@ Prefab:
propertyPath
:
m_Layer
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1346522711063220
,
guid
:
e4298313f9e94c44fb057542ec7ad273
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
e4298313f9e94c44fb057542ec7ad273
,
type
:
2
}
m_IsPrefabAsset
:
0
...
...
@@ -691,6 +695,48 @@ Prefab:
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
7fec52078de87f74abe791494596a804
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!1001
&604778652
Prefab
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_Modification
:
m_TransformParent
:
{
fileID
:
0
}
m_Modifications
:
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalPosition.x
value
:
11.29
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalPosition.y
value
:
-17.94
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalPosition.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalRotation.x
value
:
-0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalRotation.y
value
:
-0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalRotation.z
value
:
-0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_LocalRotation.w
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4639192263818050
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
propertyPath
:
m_RootOrder
value
:
15
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
a164c147037e89448820f7387c724c42
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!1001
&650104063
Prefab
:
m_ObjectHideFlags
:
0
...
...
@@ -740,6 +786,16 @@ Prefab:
propertyPath
:
enemyLayer.m_Bits
value
:
1114112
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
114402380471012178
,
guid
:
3d077a5f727dd1e4780e9265ed26e036
,
type
:
2
}
propertyPath
:
debuffTime2
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
114402380471012178
,
guid
:
3d077a5f727dd1e4780e9265ed26e036
,
type
:
2
}
propertyPath
:
debuffTime.Array.data[2]
value
:
3
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
3d077a5f727dd1e4780e9265ed26e036
,
type
:
2
}
m_IsPrefabAsset
:
0
...
...
@@ -1660,52 +1716,6 @@ Prefab:
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
c179f0931cfabec428a868a6edc543b0
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!1001
&1745261819
Prefab
:
m_ObjectHideFlags
:
0
serializedVersion
:
2
m_Modification
:
m_TransformParent
:
{
fileID
:
0
}
m_Modifications
:
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalPosition.x
value
:
3.115
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalPosition.y
value
:
1.126
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalPosition.z
value
:
-0.107421875
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalRotation.x
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalRotation.y
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalRotation.z
value
:
0
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_LocalRotation.w
value
:
1
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
4985224690782364
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_RootOrder
value
:
15
objectReference
:
{
fileID
:
0
}
-
target
:
{
fileID
:
1038441420714538
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
propertyPath
:
m_IsActive
value
:
0
objectReference
:
{
fileID
:
0
}
m_RemovedComponents
:
[]
m_SourcePrefab
:
{
fileID
:
100100000
,
guid
:
00231b2b95c4e464083ff598536b1e00
,
type
:
2
}
m_IsPrefabAsset
:
0
---
!u!1001
&1864071038
Prefab
:
m_ObjectHideFlags
:
0
...
...
Assets/Scripts/Characters/AttackProperty.cs
View file @
81ba33bb
...
...
@@ -62,7 +62,7 @@ public class AttackProperty : MonoBehaviour {
}
}
collision
.
transform
.
GetChild
(
0
).
GetComponent
<
Enemy
>().
Get
Damaged
(
curAttack
);
collision
.
transform
.
GetChild
(
0
).
GetComponent
<
Enemy
>().
Get
Hit
(
curAttack
);
//make effect
foreach
(
Collider2D
col
in
GetComponents
<
Collider2D
>())
...
...
Assets/Scripts/Characters/Enemy/Animator State/ArcherIdle.cs
View file @
81ba33bb
...
...
@@ -22,10 +22,10 @@ public class ArcherIdle : StateMachineBehaviour
noticeRange
=
enemy
.
noticeRange
;
patrolSpeed
=
enemy
.
patrolSpeed
;
enemy
.
ChangeDir_
noOption
(
NumeratedDir
.
Left
);
enemy
.
ChangeDir_
movement
(
NumeratedDir
.
Left
);
if
(
patrolRange
>
0
)
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
patrolSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
patrolSpeed
);
}
}
...
...
@@ -37,7 +37,7 @@ public class ArcherIdle : StateMachineBehaviour
animator
.
SetTrigger
(
"TrackTrigger"
);
return
;
}
if
(
!
enemy
.
MovementLock
&&
patrolRange
>
0
)
if
(
patrolRange
>
0
)
{
float
span
=
animatorRoot
.
position
.
x
-
origin
.
x
;
...
...
@@ -46,8 +46,8 @@ public class ArcherIdle : StateMachineBehaviour
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
)
{
enemy
.
ChangeDir_
noOption
(
enemy
.
MoveDir
*
-
1
);
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
patrolSpeed
);
enemy
.
ChangeDir_
movement
(
enemy
.
MoveDir
*
-
1
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
patrolSpeed
);
}
}
}
...
...
Assets/Scripts/Characters/Enemy/Animator State/ArcherTrack.cs
View file @
81ba33bb
...
...
@@ -35,14 +35,14 @@ public class ArcherTrack : StateMachineBehaviour
attackRange
=
enemy
.
attackRange
;
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
if
(
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
animator
.
GetComponent
<
Enemy
>().
PlayerDistance
<
attackRange
)
{
enemy
.
ChangeVelocityX_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
trackSpeed
);
}
}
...
...
@@ -61,18 +61,18 @@ public class ArcherTrack : StateMachineBehaviour
int
integerDir
=
enemy
.
MoveDir
;
if
(
enemy
.
WallTest
[(
integerDir
+
1
)
/
2
]
||
enemy
.
CliffTest
[(
integerDir
+
1
)
/
2
])
{
enemy
.
ChangeVelocityX_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
trackSpeed
);
}
frameCounter
+=
1
;
if
(
frameCounter
>=
maxFrame
)
{
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
frameCounter
=
0
;
}
}
...
...
Assets/Scripts/Characters/Enemy/Animator State/EnemyAirIdle.cs
View file @
81ba33bb
...
...
@@ -3,22 +3,13 @@ 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
...
...
Assets/Scripts/Characters/Enemy/Animator State/EnemyAirTrack.cs
View file @
81ba33bb
...
...
@@ -11,15 +11,12 @@ public class EnemyAirTrack : StateMachineBehaviour {
Vector2
direction
;
private
readonly
float
interpolateCoeff
=
0.05f
;
int
maxFrame
=
10
;
int
frameCount
;
// 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
=
GameManager
.
Instance
.
player
;
trackSpeed
=
enemy
.
trackSpeed
;
frameCount
=
0
;
direction
=
Vector2
.
up
;
SetDirection
();
}
...
...
@@ -30,14 +27,14 @@ public class EnemyAirTrack : StateMachineBehaviour {
{
animator
.
ResetTrigger
(
"TrackTrigger"
);
animator
.
SetTrigger
(
"IdleTrigger"
);
enemy
.
ChangeVelocityXY_
noOption
(
Vector2
.
zero
);
enemy
.
ChangeVelocityXY_
movement
(
Vector2
.
zero
);
return
;
}
SetDirection
();
Vector2
vel
=
direction
.
normalized
*
trackSpeed
;
enemy
.
ChangeVelocityXY_
noOption
(
vel
);
enemy
.
ChangeVelocityXY_
movement
(
vel
);
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
...
...
@@ -60,6 +57,6 @@ public class EnemyAirTrack : StateMachineBehaviour {
Vector2
directionToPlayer
=
(
player
.
transform
.
position
-
animatorRoot
.
position
).
normalized
;
direction
=
(
directionToPlayer
*
interpolateCoeff
+
direction
*
(
1
-
interpolateCoeff
)).
normalized
;
angle
=
Mathf
.
Atan2
(
direction
.
y
,
direction
.
x
)
*
Mathf
.
Rad2Deg
;
enemy
.
ChangeAngleZ_
noOption
(
angle
-
90.0f
);
enemy
.
ChangeAngleZ_
movement
(
angle
-
90.0f
);
}
}
Assets/Scripts/Characters/Enemy/Animator State/EnemyMeleeIdle.cs
View file @
81ba33bb
...
...
@@ -20,9 +20,9 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
noticeRange
=
enemy
.
noticeRange
;
patrolSpeed
=
enemy
.
patrolSpeed
;
enemy
.
ChangeDir_
noOption
(
NumeratedDir
.
Left
);
enemy
.
ChangeDir_
movement
(
NumeratedDir
.
Left
);
if
(
enemy
.
patrolRange
>
0
)
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
patrolSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
patrolSpeed
);
}
}
...
...
@@ -33,7 +33,7 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
animator
.
SetTrigger
(
"TrackTrigger"
);
return
;
}
if
(
!
enemy
.
MovementLock
&&
patrolRange
>
0
)
if
(
patrolRange
>
0
)
{
float
span
=
animatorRoot
.
position
.
x
-
origin
.
x
;
...
...
@@ -42,8 +42,8 @@ public class EnemyMeleeIdle : StateMachineBehaviour {
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
)
{
enemy
.
ChangeDir_
noOption
(
enemy
.
MoveDir
*
-
1
);
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
patrolSpeed
);
enemy
.
ChangeDir_
movement
(
enemy
.
MoveDir
*
-
1
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
patrolSpeed
);
}
}
}
...
...
Assets/Scripts/Characters/Enemy/Animator State/EnemyMeleeTrack.cs
View file @
81ba33bb
...
...
@@ -22,14 +22,14 @@ public class EnemyMeleeTrack : StateMachineBehaviour {
attackRange
=
enemy
.
attackRange
;
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
if
(
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
animator
.
GetComponent
<
Enemy
>().
PlayerDistance
<
attackRange
)
{
enemy
.
ChangeVelocityX_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
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_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
trackSpeed
);
}
frameCounter
+=
1
;
if
(
frameCounter
>=
maxFrame
)
{
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
frameCounter
=
0
;
}
}
...
...
Assets/Scripts/Characters/Enemy/Animator State/Jollarcher2Track.cs
View file @
81ba33bb
...
...
@@ -35,14 +35,14 @@ public class Jollarcher2Track : StateMachineBehaviour
attackRange
=
enemy
.
attackRange
;
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
if
(
enemy
.
CliffTest
[(
enemy
.
MoveDir
+
1
)
/
2
]
||
animator
.
GetComponent
<
Enemy
>().
PlayerDistance
<
attackRange
)
{
enemy
.
ChangeVelocityX_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
trackSpeed
);
}
}
...
...
@@ -62,18 +62,18 @@ public class Jollarcher2Track : StateMachineBehaviour
int
integerDir
=
enemy
.
MoveDir
;
if
(
enemy
.
WallTest
[(
integerDir
+
1
)
/
2
]
||
enemy
.
CliffTest
[(
integerDir
+
1
)
/
2
])
{
enemy
.
ChangeVelocityX_
noOption
(
0.0f
);
enemy
.
ChangeVelocityX_
movement
(
0.0f
);
}
else
{
enemy
.
ChangeVelocityX_
noOption
(
enemy
.
MoveDir
*
trackSpeed
);
enemy
.
ChangeVelocityX_
movement
(
enemy
.
MoveDir
*
trackSpeed
);
}
frameCounter
+=
1
;
if
(
frameCounter
>=
maxFrame
)
{
NumeratedDir
trackDir
=
(
animatorRoot
.
position
.
x
-
player
.
transform
.
position
.
x
>
0
)
?
NumeratedDir
.
Left
:
NumeratedDir
.
Right
;
enemy
.
ChangeDir_
noOption
(
trackDir
);
enemy
.
ChangeDir_
movement
(
trackDir
);
frameCounter
=
0
;
}
}
...
...
Assets/Scripts/Characters/Enemy/Enemy.cs
View file @
81ba33bb
...
...
@@ -27,7 +27,7 @@ public class Enemy : MonoBehaviour {
public
float
patrolSpeed
;
public
float
trackSpeed
;
public
float
[]
knockbackPercentage
;
public
float
c
urrHealth
{
get
;
protected
set
;
}
public
float
C
urrHealth
{
get
;
protected
set
;
}
// manager
protected
InventoryManager
inventoryManager
;
...
...
@@ -37,9 +37,8 @@ public class Enemy : MonoBehaviour {
// for movement
protected
Animator
animator
;
protected
float
stunnedAnimLength
;
public
bool
M
ovementLock
;
public
EnemyMovementLock
m
ovementLock
;
public
bool
Invisible
{
get
;
protected
set
;
}
public
bool
KnockbackLock
{
get
;
protected
set
;
}
public
float
PlayerDistance
{
get
;
protected
set
;
}
protected
virtual
IEnumerator
Knockback
(
float
knockbackDist
,
float
knockbackTime
)
{
yield
return
0
;
}
...
...
@@ -67,8 +66,9 @@ public class Enemy : MonoBehaviour {
protected
virtual
void
Start
()
{
currHealth
=
maxHealth
;
Invisible
=
MovementLock
=
KnockbackLock
=
false
;
CurrHealth
=
maxHealth
;
Invisible
=
false
;
movementLock
=
EnemyMovementLock
.
Free
;
if
(
enemyManager
.
DropTableByID
.
ContainsKey
(
monsterID
))
{
dropTable
=
enemyManager
.
DropTableByID
[
monsterID
];
}
PlayerDistance
=
Vector2
.
Distance
(
GameManager
.
Instance
.
player
.
transform
.
position
,
transform
.
parent
.
position
);
}
...
...
@@ -81,62 +81,41 @@ public class Enemy : MonoBehaviour {
// When damaged
// - Calculate value & Arrange information
public
virtual
void
Get
Damaged
(
PlayerAttackInfo
attack
)
public
virtual
void
Get
Hit
(
PlayerAttackInfo
attack
)
{
if
(
Invisible
)
{
return
;
}
float
prevHealth
=
currHealth
;
currHealth
-=
attack
.
damage
;
if
(
currHealth
<=
0
)
{
Invisible
=
true
;
animator
.
SetTrigger
(
"DeadTrigger"
);
StopCoroutine
(
"OnFire"
);
GetComponent
<
SpriteRenderer
>().
color
=
Color
.
white
;
return
;
}
DebuffApply
(
attack
.
debuffTime
);
TakeDamage
(
attack
.
damage
);
float
knockbackDist
=
attack
.
damage
*
attack
.
knockBackMultiplier
/
weight
;
float
knockbackTime
=
(
knockbackDist
>=
0.5f
)
?
0.5f
:
knockbackDist
;
if
(
MovementLock
)
// 넉백이 진행 중
if
(
movementLock
==
EnemyMovementLock
.
Rigid
)
// 넉백이 진행 중
{
StopCoroutine
(
"Knockback"
);
}
StartCoroutine
(
Knockback
(
knockbackDist
,
knockbackTime
));
float
currHealthPercentage
=
currHealth
/
maxHealth
;
float
prevHealthPercentage
=
prevHealth
/
maxHealth
;
foreach
(
float
percentage
in
knockbackPercentage
)
if
(
movementLock
<
EnemyMovementLock
.
Debuffed
)
{
if
(
currHealthPercentage
>
percentage
)
{
break
;
}
if
(
prevHealthPercentage
>
percentage
)
{
animator
.
SetTrigger
(
"DamagedTrigger"
);
break
;
}
movementLock
=
EnemyMovementLock
.
Rigid
;
StartCoroutine
(
Knockback
(
knockbackDist
,
knockbackTime
));
}
DebuffApply
(
attack
.
debuffTime
);
animator
.
SetTrigger
(
"TrackTrigger"
);
}
public
void
GetDamaged
(
float
damage
)
public
void
TakeDamage
(
float
damage
)
{
if
(
Invisible
)
{
return
;
}
float
prevHealth
=
c
urrHealth
;
c
urrHealth
-=
damage
;
if
(
c
urrHealth
<=
0
)
float
prevHealth
=
C
urrHealth
;
C
urrHealth
-=
damage
;
if
(
C
urrHealth
<=
0
)
{
Invisible
=
true
;
animator
.
SetTrigger
(
"DeadTrigger"
);
StopCoroutine
(
"OnFire"
);
GetComponent
<
SpriteRenderer
>().
color
=
Color
.
white
;
MakeDead
();
return
;
}
float
currHealthPercentage
=
c
urrHealth
/
maxHealth
;
float
currHealthPercentage
=
C
urrHealth
/
maxHealth
;
float
prevHealthPercentage
=
prevHealth
/
maxHealth
;
foreach
(
float
percentage
in
knockbackPercentage
)
...
...
@@ -150,6 +129,15 @@ public class Enemy : MonoBehaviour {
}
}
public
void
MakeDead
()
{
Invisible
=
true
;
animator
.
SetTrigger
(
"DeadTrigger"
);
StopCoroutine
(
"OnFire"
);
GetComponent
<
SpriteRenderer
>().
color
=
Color
.
white
;
return
;
}
// - Apply debuff
protected
void
DebuffApply
(
float
[]
debuffTime
)
{
...
...
@@ -176,11 +164,13 @@ public class Enemy : MonoBehaviour {
break
;
case
EnemyDebuffCase
.
Ice
:
debuffState
[
debuff
]
=
DebuffState
.
On
;
movementLock
=
EnemyMovementLock
.
Debuffed
;
StartCoroutine
(
OnIce
(
duration
));
break
;
case
EnemyDebuffCase
.
Stun
:
if
(
debuffState
[
debuff
]
!=
DebuffState
.
On
)
{
debuffState
[
debuff
]
=
DebuffState
.
On
;
movementLock
=
EnemyMovementLock
.
Debuffed
;
StartCoroutine
(
OnStun
(
duration
));
}
break
;
...
...
@@ -222,7 +212,7 @@ public class Enemy : MonoBehaviour {
foreach
(
Item
item
in
inventoryManager
.
itemList
)
damageMultiplier
*=
item
.
GlobalFireDamageMultiplier
();
GetDamaged
(
lifeStoneManager
.
lifeStoneRowNum
*
0.3f
*
damageMultiplier
);
TakeDamage
(
lifeStoneManager
.
lifeStoneRowNum
*
0.3f
*
damageMultiplier
);
EffectManager
.
Instance
.
StartNumber
(
0
,
gameObject
.
transform
.
parent
.
position
,
lifeStoneManager
.
lifeStoneRowNum
*
0.3f
);
}
debuffState
[(
int
)
EnemyDebuffCase
.
Fire
]
=
DebuffState
.
Off
;
...
...
@@ -244,12 +234,13 @@ public class Enemy : MonoBehaviour {
case
EnemyDebuffCase
.
Ice
:
GetComponent
<
SpriteRenderer
>().
color
=
Color
.
white
;
StopCoroutine
(
"OnIce"
);
KnockbackLock
=
fals
e
;
movementLock
=
EnemyMovementLock
.
Fre
e
;
animator
.
speed
=
1.0f
;
animator
.
SetTrigger
(
"DisableStunTrigger"
);
break
;
case
EnemyDebuffCase
.
Stun
:
StopCoroutine
(
"OnStun"
);
movementLock
=
EnemyMovementLock
.
Free
;
animator
.
speed
=
1.0f
;
animator
.
SetTrigger
(
"DisableStunTrigger"
);
break
;
...
...
@@ -266,10 +257,11 @@ public class Enemy : MonoBehaviour {
if
(
transform
.
parent
.
GetComponentInChildren
<
HPBar
>())
transform
.
parent
.
GetComponentInChildren
<
HPBar
>().
Inactivate
();
transform
.
parent
.
gameObject
.
SetActive
(
false
);
transform
.
parent
.
SetParent
(
null
);
StopAllCoroutines
();
enemyManager
.
EnemyDeadCount
++;
// 다른 enemy로 인해 소환되는 enemy가 추가될 경우 여기를 건드려야 함
enemyManager
.
EnemyDeadCount
++;
c
urrHealth
=
maxHealth
;
C
urrHealth
=
maxHealth
;
Invisible
=
false
;
// Drop 아이템 결정. 인덱스 별 아이템은 맨 밑에 서술
if
(
dropTable
==
null
)
{
return
;
}
...
...
Assets/Scripts/Characters/Enemy/EnemyAir.cs
View file @
81ba33bb
...
...
@@ -15,85 +15,84 @@ public class EnemyAir : Enemy {
protected
override
void
FixedUpdate
()
{
base
.
FixedUpdate
();
if
(
prevBumped
!=
bumped
&&
bumped
&&
!
MovementLock
)
if
(
prevBumped
!=
bumped
&&
bumped
&&
movementLock
==
EnemyMovementLock
.
Free
)
{
StartCoroutine
(
Knockback
(
0.0f
,
1
.0f
));
StartCoroutine
(
Knockback
(
0.0f
,
2
.0f
));
StartCoroutine
(
RecoverBump
());
}
prevBumped
=
bumped
;
}
public
void
Change
AngleZ_noOption
(
float
val
)
public
void
Change
VelocityXY_zero
()
// 망할 유니티 애니메이션 이벤트 Vec2를 parameter로 받는 함수를 못집어넣음
{
Change
AngleZ
(
val
,
new
bool
[]
{
MovementLock
,
KnockbackLock
}
);
Change
VelocityXY_movement
(
Vector2
.
zero
);
}
public
void
Change
VelocityXY_zero
()
// 망할 유니티 애니메이션 이벤트 Vec2를 parameter로 받는 함수를 못집어넣음
public
void
Change
AngleZ_movement
(
float
val
)
{
ChangeVelocityXY
(
Vector2
.
zero
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
if
(
movementLock
!=
EnemyMovementLock
.
Free
)
{
return
;
}
ChangeAngleZ
(
val
);
}
public
void
ChangeVelocityXY_
noOption
(
Vector2
val
)
public
void
ChangeVelocityXY_
movement
(
Vector2
val
)
{
ChangeVelocityXY
(
val
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
if
(
movementLock
!=
EnemyMovementLock
.
Free
)
{
return
;
}
ChangeVelocityXY
(
val
);
}
private
void
ChangeAngleZ
(
float
val
,
bool
[]
lockArray
)
private
void
ChangeAngleZ
(
float
val
)
{
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
)
private
void
ChangeVelocityXY
(
Vector2
val
)
{
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
;
}
// - Knockback coroutine
protected
override
IEnumerator
Knockback
(
float
knockbackDist
,
float
knockbackTime
)
{
Vector2
knockbackDir
=
(
transform
.
parent
.
position
-
enemyManager
.
Player
.
transform
.
position
).
normalized
;
Vector2
knockbackVelocity
=
(
knockbackDist
/
knockbackTime
)
*
knockbackDir
;
ChangeAngleZ
(
90
+
Mathf
.
Rad2Deg
*
Mathf
.
Atan2
(
knockbackDir
.
y
,
knockbackDir
.
x
));
ChangeVelocityXY
(
knockbackVelocity
);
yield
return
new
WaitForSeconds
(
knockbackTime
);
ChangeVelocityXY
(
Vector2
.
zero
);
if
(
movementLock
!=
EnemyMovementLock
.
Debuffed
)
movementLock
=
EnemyMovementLock
.
Free
;
}
protected
override
IEnumerator
OnIce
(
float
duration
)
{
GetComponent
<
SpriteRenderer
>().
color
=
new
Color
(
0.5f
,
0.5f
,
1f
);
ChangeVelocityXY
(
Vector2
.
zero
,
new
bool
[]
{
});
KnockbackLock
=
true
;
bumped
=
true
;
animator
.
SetTrigger
(
"StunnedTrigger"
);
animator
.
speed
=
stunnedAnimLength
/
duration
;
yield
return
new
WaitForSeconds
(
duration
);
bumped
=
false
;
OffDebuff
(
EnemyDebuffCase
.
Ice
);
}
protected
override
IEnumerator
OnStun
(
float
duration
)
{
ChangeVelocityXY
(
Vector2
.
zero
,
new
bool
[]
{
})
;
bumped
=
true
;
animator
.
SetTrigger
(
"StunnedTrigger"
);
animator
.
speed
=
stunnedAnimLength
/
duration
;
yield
return
new
WaitForSeconds
(
duration
);
OffDebuff
(
EnemyDebuffCase
.
Stun
);
bumped
=
false
;
yield
return
null
;
}
// - Knockback coroutine
protected
override
IEnumerator
Knockback
(
float
knockbackDist
,
float
knockbackTime
)
{
MovementLock
=
true
;
bool
[]
lockArray
=
new
bool
[]
{
false
,
KnockbackLock
};
Vector2
knockbackDir
=
(
transform
.
parent
.
position
-
enemyManager
.
Player
.
transform
.
position
).
normalized
;
Vector2
knockbackVelocity
=
(
knockbackDist
/
knockbackTime
)
*
knockbackDir
;
ChangeAngleZ
(
Mathf
.
Atan2
(
knockbackDir
.
y
,
knockbackDir
.
x
)
*
-
1
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
ChangeVelocityXY
(
knockbackVelocity
,
lockArray
);
yield
return
new
WaitForSeconds
(
knockbackTime
);
MovementLock
=
false
;
ChangeVelocityXY
(
Vector2
.
zero
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
}
IEnumerator
RecoverBump
()
{
yield
return
new
WaitForSeconds
(
1
.0f
);
yield
return
new
WaitForSeconds
(
2
.0f
);
bumped
=
false
;
}
}
Assets/Scripts/Characters/Enemy/EnemyGround.cs
View file @
81ba33bb
...
...
@@ -69,27 +69,27 @@ public class EnemyGround : Enemy {
// - Change direction, and speed of rigidbody of enemy
public
void
ChangeVelocityX_
noOption
(
float
val
)
public
void
ChangeVelocityX_
movement
(
float
val
)
{
ChangeVelocityX
(
val
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
if
(
movementLock
!=
EnemyMovementLock
.
Free
)
{
return
;
}
ChangeVelocityX
(
val
);
}
public
void
ChangeDir_
noOption
(
object
dir
)
public
void
ChangeDir_
movement
(
object
dir
)
{
ChangeDir
(
dir
,
new
bool
[]
{
MovementLock
,
KnockbackLock
});
if
(
movementLock
!=
EnemyMovementLock
.
Free
)
{
return
;
}
ChangeDir
(
dir
);
}
private
void
ChangeVelocityX
(
float
val
,
bool
[]
lockArray
)
private
void
ChangeVelocityX
(
float
val
)
{
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
)
private
void
ChangeDir
(
object
dir
)
{
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
);
}
...
...
@@ -97,32 +97,28 @@ public class EnemyGround : Enemy {
// - 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
);
ChangeDir
_movement
(
knockbackDir
*
-
1
);
ChangeVelocityX
(
knockbackVelocity
);
for
(
float
timer
=
0
;
timer
<=
knockbackTime
;
timer
+=
Time
.
deltaTime
)
{
if
(
CliffTest
[(
knockbackDir
+
1
)
/
2
])
{
ChangeVelocityX
(
0.0f
,
lockArray
);
ChangeVelocityX
(
0.0f
);
yield
return
new
WaitForSeconds
(
knockbackTime
-
timer
);
break
;
}
yield
return
new
WaitForFixedUpdate
();
}
MovementLock
=
false
;
ChangeVelocityX
(
0.0f
,
new
bool
[]
{
MovementLock
,
KnockbackLock
})
;
ChangeVelocityX
(
0.0f
)
;
if
(
movementLock
!=
EnemyMovementLock
.
Debuffed
)
movementLock
=
EnemyMovementLock
.
Free
;
}
protected
override
IEnumerator
OnIce
(
float
duration
)
{
GetComponent
<
SpriteRenderer
>().
color
=
new
Color
(
0.5f
,
0.5f
,
1f
);
ChangeVelocityX
(
0.0f
,
new
bool
[]
{
});
KnockbackLock
=
true
;
animator
.
SetTrigger
(
"StunnedTrigger"
);
animator
.
speed
=
stunnedAnimLength
/
duration
;
yield
return
new
WaitForSeconds
(
duration
);
...
...
@@ -131,11 +127,9 @@ public class EnemyGround : Enemy {
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
;
}
}
Assets/Scripts/Characters/Enemy/Scarecrow.cs
View file @
81ba33bb
...
...
@@ -5,17 +5,17 @@ using UnityEngine;
public
class
Scarecrow
:
Enemy
{
public
bool
neverDie
;
public
override
void
Get
Damaged
(
PlayerAttackInfo
attack
)
public
override
void
Get
Hit
(
PlayerAttackInfo
attack
)
{
if
(
Invisible
)
{
return
;
}
float
prevHealth
=
c
urrHealth
;
c
urrHealth
-=
attack
.
damage
;
float
prevHealth
=
C
urrHealth
;
C
urrHealth
-=
attack
.
damage
;
if
(
c
urrHealth
<=
0
)
if
(
C
urrHealth
<=
0
)
{
if
(
neverDie
)
{
c
urrHealth
=
maxHealth
;
C
urrHealth
=
maxHealth
;
}
else
{
...
...
Assets/Scripts/EnemyManager.cs
View file @
81ba33bb
...
...
@@ -65,7 +65,7 @@ public class EnemyManager : Singleton<EnemyManager>
{
GameObject
clone
=
PickFromPool
(
enemy
);
clone
.
transform
.
position
=
location
.
position
;
clone
.
transform
.
SetParent
(
MapManager
.
currentRoom
.
roomInGame
.
transform
);
clone
.
transform
.
SetParent
(
MapManager
.
currentRoom
.
transform
);
}
}
}
...
...
Assets/Scripts/Enumerators.cs
View file @
81ba33bb
...
...
@@ -21,6 +21,13 @@ public enum NumeratedDir
Right
=
1
};
public
enum
EnemyMovementLock
{
Free
,
Rigid
,
Debuffed
};
public
enum
PlayerDebuffCase
{
...
...
Assets/Scripts/HPBar.cs
View file @
81ba33bb
...
...
@@ -31,7 +31,7 @@ public class HPBar : MonoBehaviour {
instBor
.
transform
.
localScale
=
new
Vector3
(
width
/
instBor
.
GetComponent
<
SpriteRenderer
>().
size
.
x
,
height
/
instBor
.
GetComponent
<
SpriteRenderer
>().
size
.
y
,
1
);
instBor
.
transform
.
position
=
transform
.
parent
.
position
+
new
Vector3
(
0
,
yOffset
,
0
);
float
cur
=
Mathf
.
Max
(
0
,
transform
.
parent
.
GetComponentInChildren
<
Enemy
>().
c
urrHealth
/
transform
.
parent
.
GetComponentInChildren
<
Enemy
>().
maxHealth
);
float
cur
=
Mathf
.
Max
(
0
,
transform
.
parent
.
GetComponentInChildren
<
Enemy
>().
C
urrHealth
/
transform
.
parent
.
GetComponentInChildren
<
Enemy
>().
maxHealth
);
instRed
.
SetActive
(
true
);
instRed
.
transform
.
localScale
=
new
Vector3
((
width
/
instRed
.
GetComponent
<
SpriteRenderer
>().
size
.
x
-
height
/
instRed
.
GetComponent
<
SpriteRenderer
>().
size
.
y
*
0.2f
)
*
cur
,
height
/
instRed
.
GetComponent
<
SpriteRenderer
>().
size
.
y
*
0.8f
,
1
);
instRed
.
transform
.
position
=
transform
.
parent
.
position
+
new
Vector3
((
width
-
height
*
0.2f
)
/
-
2f
,
yOffset
,
0
);
...
...
Assets/Scripts/Item/Addons/Gluttony.cs
View file @
81ba33bb
...
...
@@ -22,7 +22,7 @@ public class Gluttony : Addon
}
public
override
void
OtherEffect
(
PlayerAttackInfo
attackInfo
,
Enemy
enemyInfo
,
string
combo
)
{
if
(
attackInfo
.
damage
>=
enemyInfo
.
c
urrHealth
)
if
(
attackInfo
.
damage
>=
enemyInfo
.
C
urrHealth
)
{
lifeStoneManager
.
FillLifeStone
(
1
,
LifeStoneType
.
Normal
);
}
...
...
Assets/Scripts/Item/Addons/JanusCoin.cs
View file @
81ba33bb
...
...
@@ -26,7 +26,7 @@ public class JanusCoin : Addon
}
else
{
return
enemyInfo
.
c
urrHealth
*
0.25f
;
return
enemyInfo
.
C
urrHealth
*
0.25f
;
}
}
}
\ No newline at end of file
Assets/Scripts/Item/Items/ShockStick.cs
View file @
81ba33bb
...
...
@@ -65,7 +65,7 @@ public class ShockStick : Item {
{
PlayerAttackInfo
attack
=
new
PlayerAttackInfo
(
20f
,
0f
,
new
float
[(
int
)
EnemyDebuffCase
.
END_POINTER
]
{
0
,
0
,
2
,
0
,
0
});
AttackCalculation
(
attack
,
enemy
,
combo
[
1
]);
enemy
.
Get
Damaged
(
attack
);
enemy
.
Get
Hit
(
attack
);
EffectManager
.
Instance
.
StartEffect
(
0
,
enemy
.
gameObject
.
transform
.
position
);
EffectManager
.
Instance
.
StartNumber
(
1
,
enemy
.
gameObject
.
transform
.
position
,
attack
.
damage
);
}
...
...
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