|
|
@@ -62,7 +62,8 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
}
|
|
|
void OnState()
|
|
|
{
|
|
|
-
|
|
|
+ Vector3 pos1;
|
|
|
+ Vector3 pos2;
|
|
|
switch (state)
|
|
|
{
|
|
|
case InvisibleState.Normal:
|
|
|
@@ -78,7 +79,7 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
return;
|
|
|
}
|
|
|
posx = PlayersInput.instance[nowPlayer].transform.position.x;
|
|
|
- targetPos = new Vector3(posx + offsetX, altitude + offsetY, 0);
|
|
|
+ targetPos = new Vector3(posx + offsetX, altitude + offsetY, transform.position.z);
|
|
|
Goto(targetPos, moveSpeed);
|
|
|
if (Vector3.Distance(targetPos, transform.position) < 1)
|
|
|
{
|
|
|
@@ -110,7 +111,10 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
case InvisibleState.FindSoul:
|
|
|
if (targetSoul.gameObject.activeSelf)
|
|
|
{
|
|
|
- if(Vector3.Distance(transform.position, targetSoul.transform.position) <= 1)
|
|
|
+ pos1 = new Vector3(transform.position.x, transform.position.y, 0);
|
|
|
+ pos2 = new Vector3(targetSoul.transform.position.x,
|
|
|
+ targetSoul.transform.position.y, 0);
|
|
|
+ if(Vector3.Distance(pos1, pos2) <= 1)
|
|
|
{
|
|
|
SoulInMap.souls.Remove(targetSoul);
|
|
|
targetSoul.gameObject.SetActive(false);
|
|
|
@@ -133,13 +137,17 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
ChangeState(InvisibleState.Normal);
|
|
|
break;
|
|
|
}
|
|
|
- targetPos = targetSoul.transform.position;
|
|
|
+ targetPos = new Vector3(targetSoul.transform.position.x,targetSoul.transform.position.y,
|
|
|
+ transform.position.z);
|
|
|
+
|
|
|
Goto(targetPos, findSoulSpeed);
|
|
|
|
|
|
break;
|
|
|
case InvisibleState.FindPlayer:
|
|
|
- if (Vector3.Distance(transform.position,
|
|
|
- enemy.targetCharacter.transform.position + Vector3.up * 0.5f)<= enemy.hateDistance)
|
|
|
+ pos1 = new Vector3(transform.position.x, transform.position.y, 0);
|
|
|
+ pos2 = new Vector3(enemy.targetCharacter.transform.position.x,
|
|
|
+ enemy.targetCharacter.transform.position.y + 0.5f, 0);
|
|
|
+ if (Vector3.Distance(pos1,pos2)<= enemy.hateDistance)
|
|
|
{
|
|
|
ChangeState(InvisibleState.Boom);
|
|
|
break;
|
|
|
@@ -181,7 +189,7 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
break;
|
|
|
case InvisibleState.Hurt:
|
|
|
posx = transform.position.x;
|
|
|
- targetPos = new Vector3(posx + offsetX - back, altitude + offsetY, 0);
|
|
|
+ targetPos = new Vector3(posx + offsetX - back, altitude + offsetY, transform.position.z);
|
|
|
|
|
|
break;
|
|
|
case InvisibleState.FindSoul:
|
|
|
@@ -215,17 +223,23 @@ public class ESpirits_Invisible : MonoBehaviour
|
|
|
}
|
|
|
public void FindSoul()
|
|
|
{
|
|
|
- List<Soul> souls = SoulInMap.souls;
|
|
|
+ Vector3 pos1;
|
|
|
+ Vector3 pos2;
|
|
|
+ List <Soul> souls = SoulInMap.souls;
|
|
|
if(souls.Count == 0)
|
|
|
{
|
|
|
targetSoul = null;
|
|
|
return;
|
|
|
}
|
|
|
- float minDistance = Vector3.Distance(souls[0].transform.position, transform.position);
|
|
|
+ pos1 = new Vector3(souls[0].transform.position.x, souls[0].transform.position.y, 0);
|
|
|
+ pos2 = new Vector3(transform.position.x, transform.position.y, 0);
|
|
|
+ float minDistance = Vector3.Distance(pos1,pos2);
|
|
|
int targetSoulId = 0;
|
|
|
for(int i = 1; i < souls.Count; i++)
|
|
|
{
|
|
|
- float distance = Vector3.Distance(souls[i].transform.position, transform.position);
|
|
|
+ pos1 = new Vector3(souls[i].transform.position.x, souls[i].transform.position.y, 0);
|
|
|
+ pos2 = new Vector3(transform.position.x, transform.position.y, 0);
|
|
|
+ float distance = Vector3.Distance(pos1,pos2);
|
|
|
if (distance < minDistance)
|
|
|
{
|
|
|
minDistance = distance;
|