Commit ef70d42e authored by 16도재형's avatar 16도재형

보스방 앙망문

parent 06ff808c
This diff is collapsed.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JiJooDead : 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) {
//
//}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
if (true)
{
animator.SetBool("PhaseEnd", true);
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: e3cdf16beaf8ced48a82f46a6fe4b13a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
...@@ -110,7 +110,7 @@ MonoBehaviour: ...@@ -110,7 +110,7 @@ MonoBehaviour:
- {fileID: 114384035641513528, guid: a2dadbc92c7cc7e449233fae6430dee7, type: 2} - {fileID: 114384035641513528, guid: a2dadbc92c7cc7e449233fae6430dee7, type: 2}
- {fileID: 114704192105535744, guid: a121f45347e4c3d4faf83b4e681c84f0, type: 2} - {fileID: 114704192105535744, guid: a121f45347e4c3d4faf83b4e681c84f0, type: 2}
- {fileID: 114453972306455548, guid: f6834170b7152ee4db0dc7e165dcca70, type: 2} - {fileID: 114453972306455548, guid: f6834170b7152ee4db0dc7e165dcca70, type: 2}
- {fileID: 114902494803447852, guid: 8e573eb3b8b071c47a4ee92adf1a9644, type: 2} - {fileID: 114367142578803744, guid: 8e573eb3b8b071c47a4ee92adf1a9644, type: 2}
roomSurfaceSprite1: roomSurfaceSprite1:
- {fileID: 21300000, guid: 5e6d29c00a95b8140a33c81d93aac0b2, type: 3} - {fileID: 21300000, guid: 5e6d29c00a95b8140a33c81d93aac0b2, type: 3}
- {fileID: 21300000, guid: 45c68bb908319e942b8dcdaba688c080, type: 3} - {fileID: 21300000, guid: 45c68bb908319e942b8dcdaba688c080, type: 3}
......
fileFormatVersion: 2
guid: 43e46c6c92fe0584995bf0e5987bf559
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
...@@ -36,13 +36,21 @@ public class JiJooMove : StateMachineBehaviour { ...@@ -36,13 +36,21 @@ public class JiJooMove : StateMachineBehaviour {
enemy.transform.eulerAngles = new Vector3(0, 0, JiJoo.Vector2ToZAngle(dir)); enemy.transform.eulerAngles = new Vector3(0, 0, JiJoo.Vector2ToZAngle(dir));
velocity = dir * new Vector2(horizontalSpeed, verticalSpeed); velocity = dir * new Vector2(horizontalSpeed, verticalSpeed);
Debug.Log(destination);
Vector2 realVector = JiJoo.RealPosition(destination) - JiJoo.RealPosition(enemy.gridPosition); Vector2 realVector = JiJoo.RealPosition(destination) - JiJoo.RealPosition(enemy.gridPosition);
time = Mathf.Abs(realVector.x) / horizontalSpeed + Mathf.Abs(realVector.y) / verticalSpeed; time = Mathf.Abs(realVector.x) / horizontalSpeed + Mathf.Abs(realVector.y) / verticalSpeed;
timer = 0; timer = 0;
rb2D.MovePosition(rb2D.position + velocity * Time.deltaTime);
} }
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
if (destination.x < 0 || destination.x >= 6 || destination.y < 0 || destination.y >= 6)
{
animator.SetTrigger("IdleTrigger");
return;
}
rb2D.MovePosition(rb2D.position + velocity * Time.deltaTime); rb2D.MovePosition(rb2D.position + velocity * Time.deltaTime);
if (timer > time) if (timer > time)
{ {
......
...@@ -11,6 +11,8 @@ public abstract class JiJoo : Boss { ...@@ -11,6 +11,8 @@ public abstract class JiJoo : Boss {
public float horizontalSpeed; public float horizontalSpeed;
public float verticalSpeed; public float verticalSpeed;
public GameObject egg;
public abstract bool IsAttackable(); public abstract bool IsAttackable();
protected override void Awake() protected override void Awake()
...@@ -60,36 +62,23 @@ public abstract class JiJoo : Boss { ...@@ -60,36 +62,23 @@ public abstract class JiJoo : Boss {
} }
public override void GetDamaged(PlayerAttackInfo attack) public override void GetHit(PlayerAttackInfo attack)
{ {
if (Invisible) { return; } TakeDamage(attack.damage);
float prevHealth = currHealth;
currHealth -= attack.damage;
if (currHealth <= 0)
{
Invisible = true;
animator.SetTrigger("DeadTrigger");
StopCoroutine("OnFire");
GetComponent<SpriteRenderer>().color = Color.white;
if (bossRoom.CurPhase == bossRoom.totalPhase - 1)
{
currHealth = 1;
}
}
DebuffApply(attack.debuffTime); DebuffApply(attack.debuffTime);
}
float knockbackDist = attack.damage * attack.knockBackMultiplier / weight; public override void TakeDamage(float damage)
float knockbackTime = (knockbackDist >= 0.5f) ? 0.5f : knockbackDist; {
if (Invisible) { return; }
if (MovementLock) // 넉백이 진행 중 float prevHealth = CurrHealth;
CurrHealth -= damage;
if (CurrHealth <= 0)
{ {
StopCoroutine("Knockback"); MakeDead();
return;
} }
StartCoroutine(Knockback(knockbackDist, knockbackTime)); /*
float currHealthPercentage = CurrHealth / maxHealth;
float currHealthPercentage = currHealth / maxHealth;
float prevHealthPercentage = prevHealth / maxHealth; float prevHealthPercentage = prevHealth / maxHealth;
foreach (float percentage in knockbackPercentage) foreach (float percentage in knockbackPercentage)
...@@ -101,20 +90,20 @@ public abstract class JiJoo : Boss { ...@@ -101,20 +90,20 @@ public abstract class JiJoo : Boss {
break; break;
} }
} }
animator.SetTrigger("TrackTrigger"); */
} }
public abstract Vector2Int MoveDirection(); public abstract Vector2Int MoveDirection();
public IEnumerator Heal(float hp, float time) public IEnumerator Heal(float hp, float time)
{ {
float delta = hp - currHealth; float delta = hp - CurrHealth;
for (float t = 0; t <= time; t += Time.deltaTime) for (float t = 0; t <= time; t += Time.deltaTime)
{ {
yield return null; yield return null;
currHealth += (delta * t / time); CurrHealth += (delta * t / time);
} }
currHealth = hp; CurrHealth = hp;
} }
public static float Vector2ToZAngle(Vector2Int dir) public static float Vector2ToZAngle(Vector2Int dir)
......
...@@ -35,7 +35,7 @@ public class Enemy : MonoBehaviour { ...@@ -35,7 +35,7 @@ public class Enemy : MonoBehaviour {
protected EnemyManager enemyManager; protected EnemyManager enemyManager;
// for movement // for movement
protected Animator animator; public Animator animator;
protected float stunnedAnimLength; protected float stunnedAnimLength;
public EnemyMovementLock movementLock; public EnemyMovementLock movementLock;
public bool Invisible { get; protected set; } public bool Invisible { get; protected set; }
...@@ -104,7 +104,7 @@ public class Enemy : MonoBehaviour { ...@@ -104,7 +104,7 @@ public class Enemy : MonoBehaviour {
animator.SetTrigger("TrackTrigger"); animator.SetTrigger("TrackTrigger");
} }
public void TakeDamage(float damage) public virtual void TakeDamage(float damage)
{ {
if (Invisible) { return; } if (Invisible) { return; }
float prevHealth = CurrHealth; float prevHealth = CurrHealth;
...@@ -135,7 +135,6 @@ public class Enemy : MonoBehaviour { ...@@ -135,7 +135,6 @@ public class Enemy : MonoBehaviour {
animator.SetTrigger("DeadTrigger"); animator.SetTrigger("DeadTrigger");
StopCoroutine("OnFire"); StopCoroutine("OnFire");
GetComponent<SpriteRenderer>().color = Color.white; GetComponent<SpriteRenderer>().color = Color.white;
return;
} }
// - Apply debuff // - Apply debuff
......
...@@ -58,7 +58,7 @@ public class EnemyAir : Enemy { ...@@ -58,7 +58,7 @@ public class EnemyAir : Enemy {
// - Knockback coroutine // - Knockback coroutine
protected override IEnumerator Knockback(float knockbackDist, float knockbackTime) protected override IEnumerator Knockback(float knockbackDist, float knockbackTime)
{ {
Vector2 knockbackDir = (transform.parent.position - enemyManager.Player.transform.position).normalized; Vector2 knockbackDir = (transform.parent.position - GameManager.Instance.player.transform.position).normalized;
Vector2 knockbackVelocity = (knockbackDist / knockbackTime) * knockbackDir; Vector2 knockbackVelocity = (knockbackDist / knockbackTime) * knockbackDir;
ChangeAngleZ(90 + Mathf.Rad2Deg * Mathf.Atan2(knockbackDir.y, knockbackDir.x)); ChangeAngleZ(90 + Mathf.Rad2Deg * Mathf.Atan2(knockbackDir.y, knockbackDir.x));
......
...@@ -6,11 +6,16 @@ public class Scarecrow : Enemy { ...@@ -6,11 +6,16 @@ public class Scarecrow : Enemy {
public bool neverDie; public bool neverDie;
public override void GetHit(PlayerAttackInfo attack) public override void GetHit(PlayerAttackInfo attack)
{
TakeDamage(attack.damage);
DebuffApply(attack.debuffTime);
}
public override void TakeDamage(float damage)
{ {
if (Invisible) { return; } if (Invisible) { return; }
float prevHealth = CurrHealth; float prevHealth = CurrHealth;
CurrHealth -= attack.damage; CurrHealth -= damage;
if (CurrHealth <= 0) if (CurrHealth <= 0)
{ {
if (neverDie) if (neverDie)
...@@ -19,12 +24,10 @@ public class Scarecrow : Enemy { ...@@ -19,12 +24,10 @@ public class Scarecrow : Enemy {
} }
else else
{ {
Invisible = true; MakeDead();
animator.SetTrigger("DeadTrigger");
return; return;
} }
} }
animator.SetTrigger("DamagedTrigger"); animator.SetTrigger("DamagedTrigger");
} }
} }
...@@ -29,6 +29,7 @@ public class PlayerController : MonoBehaviour ...@@ -29,6 +29,7 @@ public class PlayerController : MonoBehaviour
private float doubleJumpSpeed; private float doubleJumpSpeed;
[SerializeField] [SerializeField]
private float dashAcceleration; private float dashAcceleration;
private float slowRatio = 1;
public Collider2D platformCollider; public Collider2D platformCollider;
// Bool values for jump & doublejump // Bool values for jump & doublejump
private bool isGrounded = true; private bool isGrounded = true;
...@@ -217,7 +218,7 @@ public class PlayerController : MonoBehaviour ...@@ -217,7 +218,7 @@ public class PlayerController : MonoBehaviour
if (isGrounded) playerState = PlayerState.Walk; if (isGrounded) playerState = PlayerState.Walk;
} }
rb.velocity = new Vector2(xVelocity, yVelocity); rb.velocity = slowRatio * new Vector2(xVelocity, yVelocity);
} }
if (playerState != PlayerState.GoingUp && playerState != PlayerState.GoingDown && playerState != PlayerState.Attack) if (playerState != PlayerState.GoingUp && playerState != PlayerState.GoingDown && playerState != PlayerState.Attack)
airAttack = true; airAttack = true;
...@@ -350,4 +351,11 @@ public class PlayerController : MonoBehaviour ...@@ -350,4 +351,11 @@ public class PlayerController : MonoBehaviour
yield return new WaitForSeconds(0.3f); yield return new WaitForSeconds(0.3f);
ropeEnabled = true; ropeEnabled = true;
} }
public IEnumerator OnSlow(float time, float ratio)
{
slowRatio = ratio;
yield return new WaitForSeconds(time);
slowRatio = 1;
}
} }
...@@ -36,14 +36,14 @@ public class JiJooRoom : BossRoomInGame { ...@@ -36,14 +36,14 @@ public class JiJooRoom : BossRoomInGame {
} }
protected void Phase1() protected void Phase1()
{ {
if (bosses[0].currHealth <= 0 && bosses[1].currHealth <= 0) if (bosses[0].animator.GetBool("PhaseEnd") && bosses[1].animator.GetBool("PhaseEnd"))
{ {
CurPhase++; CurPhase++;
} }
} }
protected void Phase2() protected void Phase2()
{ {
if (bosses[0].currHealth <= 0 && bosses[1].currHealth <= 0) if (bosses[0].animator.GetBool("PhaseEnd") && bosses[1].animator.GetBool("PhaseEnd"))
{ {
CurPhase++; CurPhase++;
} }
......
%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: ji
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: []
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: []
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
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: 7505ba8e49e353a49acf0622218f39a9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: ji
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers: []
fileFormatVersion: 2
guid: b421706526a0e8c4f8efb5b8767fc03e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
...@@ -97,7 +97,7 @@ TextureImporter: ...@@ -97,7 +97,7 @@ TextureImporter:
outline: [] outline: []
physicsShape: [] physicsShape: []
bones: [] bones: []
spriteID: 55840a691a2a3ac47933f719114d75e6 spriteID: e130baac02afce24595985ad20f72243
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
......
...@@ -97,7 +97,7 @@ TextureImporter: ...@@ -97,7 +97,7 @@ TextureImporter:
outline: [] outline: []
physicsShape: [] physicsShape: []
bones: [] bones: []
spriteID: fcea12ea4a6254b4da504342badaecbd spriteID: f83b753293fdba14fb1c2ed6ad6b48e1
vertices: [] vertices: []
indices: indices:
edges: [] edges: []
......
%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: joo
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: []
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: []
pptrCurveMapping: []
m_AnimationClipSettings:
serializedVersion: 2
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1
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: 9a316d37d41a0864eb6ef6e6f90b9845
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_Name: joo
serializedVersion: 5
m_AnimatorParameters: []
m_AnimatorLayers: []
fileFormatVersion: 2
guid: 04f97613f3e88f94695a5bc6d1935926
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 2dad10987ebeb2440be19ec7cbbb9bd2
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: 0
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: 64
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: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- serializedVersion: 2
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 0
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 6c1ba8dc53c61894dbb0a687af177b4f
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
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