Rigidbody Charactor; //캐릭터의 리지드바디 // Use this for initialization void Start() { EndTimer = 0; //타이머를 초기화 시켜준다 DustSmoke.Stop(); //흙먼지 효과를 멈추어준다 Charactor = transform.GetComponent <Rigidbody>(); //리지드바디를 받아 넣어줍니다 BossSt = Boss_State.Idle; //상태는 IDLE로 둡니다 }
void SetState() { distanceToTarget = Vector3.Distance(transform.position, playerTarget.position); if (boss_State != Boss_State.DEATH) { if (distanceToTarget > 3f && distanceToTarget <= 15f) { boss_State = Boss_State.PAUSE; } else if (distanceToTarget > 15f) { boss_State = Boss_State.IDLE; } else if (distanceToTarget <= 3f) { boss_State = Boss_State.ATTACK; } else { boss_State = Boss_State.NONE; } if (bossHealth.health <= 0f) { boss_State = Boss_State.DEATH; } }// if boss_state is not Death }
void Start() { EndTimer = 0; DustSmoke.Stop(); Charactor = transform.GetComponent <Rigidbody>(); BossSt = Boss_State.Idle; }
public void ChScript(Boss_State newState) { if (_isinit) { _states[currentState].enabled = false; _states[currentState].EndState(); } currentState = newState; _states[currentState].BeginState(); _states[currentState].enabled = true; }
// Update is called once per frame void Update() { BossTimer += Time.deltaTime; //보스 패턴의 시간을 deltaTime을 통해서 잽니다 BTimer += Time.deltaTime; //폭탄의 타이머를 deltaiTine을 통해서 잽니다 Charactor.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionX; //회전이나 X축 이동을 하지 못하게 막아둡니다 if (BossTimer > 10.0f) //보스 타이머가 10초가 넘어갈 경우 패턴을 시작합니다 { if (Boss_Hp > 7 && BTimer > 2.0f) //보스의 채력이 7보다 크고 2초가 경과했을때 { Boss_Ani.SetBool("patton1", true); //패턴1을 시작합니다 BossSt = Boss_State.Patton1; BossPatton1(); } else if (Boss_Hp <= 7 && Boss_Hp > 3) //보스의 체력이 7이하이고 3보다 클때 { transform.localEulerAngles = new Vector3(0, -90, 0); Boss_Ani.SetBool("Patton2", true); BossSt = Boss_State.Patton2; //패턴2를 시작합니다 BossPatton2(); } else if (Boss_Hp <= 3 && Boss_Hp > 0) //보스이 체력이 3이하이고 0보다 클때 { Boss_Ani.SetBool("Patton2", false); Boss_Ani.SetBool("patton1", true); BossSt = Boss_State.Patton3; //패턴3을 시작합니다 BossPatton2(); //패턴3은 패턴1과 패턴2를 동시에 사용합니다 BossPatton1(); } else if (Boss_Hp <= 0) //보스의 체력이 0이하이면 { EndTimer += Time.deltaTime; if (EndTimer > 7.0f) { SceneManager.LoadScene("Endig"); //7초뒤 엔딩씬으로 넘어갑니다 } flag.SetActive(true); BossSt = Boss_State.Die; //보스가 죽은 후 각종 아이템이 나타납니다 Boss_Ani.SetBool("Death", true); if (sandClock) { sandClock.SetActive(true); } } } BossTalk(); }
void Update() { BossTimer += Time.deltaTime; BTimer += Time.deltaTime; Charactor.constraints = RigidbodyConstraints.FreezeRotation | RigidbodyConstraints.FreezePositionX; if (BossTimer > 10.0f) { if (Boss_Hp > 7 && BTimer > 2.0f) { Boss_Ani.SetBool("patton1", true); BossSt = Boss_State.Patton1; BossPatton1(); } else if (Boss_Hp <= 7 && Boss_Hp > 3) { transform.localEulerAngles = new Vector3(0, -90, 0); Boss_Ani.SetBool("Patton2", true); BossSt = Boss_State.Patton2; BossPatton2(); } else if (Boss_Hp <= 3 && Boss_Hp > 0) { Boss_Ani.SetBool("Patton2", false); Boss_Ani.SetBool("patton1", true); BossSt = Boss_State.Patton3; BossPatton2(); BossPatton1(); } else if (Boss_Hp <= 0) { EndTimer += Time.deltaTime; if (EndTimer > 7.0f) { SceneManager.LoadScene("Endig"); } flag.SetActive(true); BossSt = Boss_State.Die; Boss_Ani.SetBool("Death", true); if (sandClock) { sandClock.SetActive(true); } } } BossTalk(); }